Browse Prior Art Database

BIT VECTOR Algorithm for Detecting Self-Modification in Data Chains

IP.com Disclosure Number: IPCOM000036626D
Original Publication Date: 1989-Oct-01
Included in the Prior Art Database: 2005-Jan-29
Document File: 3 page(s) / 43K

Publishing Venue

IBM

Related People

Menon, MJ: AUTHOR

Abstract

Disclosed is a method for detecting self-modification in data chained CCWs. Data chaining is used to rearrange data as it is transferred between CPU memory and a storage device and allows a contiguous block of data stored on a disk to be stored in non-contiguous locations in host memory.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 54% of the total text.

Page 1 of 3

BIT VECTOR Algorithm for Detecting Self-Modification in Data Chains

Disclosed is a method for detecting self-modification in data chained CCWs. Data chaining is used to rearrange data as it is transferred between CPU memory and a storage device and allows a contiguous block of data stored on a disk to be stored in non-contiguous locations in host memory.

Channel Command Words (CCWs) are commands that specify operations to be performed by the device. A Read CCW specifies a host memory address and a byte count of the number of bytes to be transferred to that host memory address. Shown below is a chain of four data chained CCWs. Read X1 Y1 Read X2 Y2 Read X3 Y3 Read X4 Y4

This data chain reads a block of data stored on a storage device, and stores the first Y1 bytes starting at location X1 in host memory, the next Y2 bytes starting at location X2 in host memory, and so on. Each of the addresses X1, X2, X3 and X4 may be indirect.

That is, rather than transfer Y1 bytes to X1, the address to which the data is to be transferred may be stored at location X1. This is referred to as Indirect Data Address Word (IDAW). If the IDAW bit were set in a CCW, then the host address contains an IDAW. Read 2000 4000 Loc:2000 3072

Loc:2004 6144

Loc 2008 10240

Above, we show a Read CCW (with the IDAW bit set we assume) to read 4000 bytes. However, since the IDAW bit is set, we should not read the data to location 2000. Rather, location 2000 contains an IDAW. Looking in location 2000, we see that it contains the value 3072. Each IDAW specifies a maximum of 2048 bytes for transfer. To calculate the number of bytes specified by an IDAW, round it up to the next 2K boundary. 3072 rounded up gives us 4096. So, the IDAW 3072 specifies (4096-3072) or 1024 bytes. Thus, the first 1024 bytes read by the Read CCW will be stored at locations 3072 through location 4095. Since the Read CCW asked to read 4000 bytes, and the first IDAW only indicates where the first 1024 bytes will be transferred, the second IDAW (at location 2004) takes effect. This IDAW specifies 2048 bytes for data transfer to locations 6144 through 8191. The first two IDAWs together have specified 3072 bytes (1024+2048). The last 928 bytes will be read into locations 10240 through 11167 as specified by the IDAW at location 2008.

To summarize, the most complicated Read operation with data chaining and IDAWS may be represented as follows: X1: Read IDAW11,IDAW12,..IDAW1m1 L11 to U11,L12 to U12,..L1m1 to U1m1 X2: Read IDAW21,IDAW22,..IDAW2m2 L21 to U21,L22 to U22,..L2m2 to U2m2 X3: Read IDAW31,IDAW32,..IDAW3m3 L31 to U31,L32 to U32,..L3m3 to U3m3 . . . . . . . .

. Xn: Read IDAWn1,IDAWn2,..IDAWnmn Ln1 to Un1,Ln2 to Un2,... Lnmn to Unmn

1

Page 2 of 3

A total of n commands are assumed to make up the data chain. Each read command is assumed to have several IDAWs (the first one has m1 IDAWs, the second one has m2 IDAWs, and so on, the last one has mn IDAWs). The ith IDAW in the jth CCW (1<=i<=mj, 1<=j<=n) is...