64-bit REQ_SEEK_POS
Change-Id: I2e51a188b171af0f0a02349e4eccbe78e7cc2e0c
This commit is contained in:
@@ -70,7 +70,7 @@ int fs_readwrite(void)
|
||||
default: panic("odd request");
|
||||
}
|
||||
gid = (cp_grant_id_t) fs_m_in.REQ_GRANT;
|
||||
position = (off_t) fs_m_in.REQ_SEEK_POS_LO;
|
||||
position = (off_t) fs_m_in.REQ_SEEK_POS;
|
||||
nrbytes = (size_t) fs_m_in.REQ_NBYTES;
|
||||
|
||||
rdwt_err = OK; /* set to EIO if disk error occurs */
|
||||
@@ -160,8 +160,7 @@ int fs_breadwrite(void)
|
||||
/* Get the values from the request message */
|
||||
rw_flag = (fs_m_in.m_type == REQ_BREAD ? READING : WRITING);
|
||||
gid = (cp_grant_id_t) fs_m_in.REQ_GRANT;
|
||||
position = make64((unsigned long) fs_m_in.REQ_SEEK_POS_LO,
|
||||
(unsigned long) fs_m_in.REQ_SEEK_POS_HI);
|
||||
position = fs_m_in.REQ_SEEK_POS;
|
||||
nrbytes = (size_t) fs_m_in.REQ_NBYTES;
|
||||
|
||||
block_size = get_block_size(fs_m_in.REQ_DEV);
|
||||
@@ -633,7 +632,7 @@ int fs_getdents(void)
|
||||
ino = (pino_t) fs_m_in.REQ_INODE_NR;
|
||||
gid = (cp_grant_id_t) fs_m_in.REQ_GRANT;
|
||||
size = (size_t) fs_m_in.REQ_MEM_SIZE;
|
||||
pos = (off_t) fs_m_in.REQ_SEEK_POS_LO;
|
||||
pos = (off_t) fs_m_in.REQ_SEEK_POS;
|
||||
|
||||
/* Check whether the position is properly aligned */
|
||||
if ((unsigned int) pos % DIR_ENTRY_ALIGN)
|
||||
|
||||
@@ -34,7 +34,7 @@ int fs_read(void) {
|
||||
dir = get_dir_record(fs_m_in.REQ_INODE_NR);
|
||||
if (dir == NULL) return(EINVAL); /* no inode found */
|
||||
|
||||
position = fs_m_in.REQ_SEEK_POS_LO;
|
||||
position = fs_m_in.REQ_SEEK_POS;
|
||||
nrbytes = (unsigned) fs_m_in.REQ_NBYTES; /* number of bytes to read */
|
||||
block_size = v_pri.logical_block_size_l;
|
||||
gid = fs_m_in.REQ_GRANT;
|
||||
@@ -96,7 +96,7 @@ int fs_bread(void)
|
||||
|
||||
rw_flag = (fs_m_in.m_type == REQ_BREAD ? READING : WRITING);
|
||||
gid = fs_m_in.REQ_GRANT;
|
||||
position = make64(fs_m_in.REQ_SEEK_POS_LO, fs_m_in.REQ_SEEK_POS_HI);
|
||||
position = fs_m_in.REQ_SEEK_POS;
|
||||
nrbytes = (unsigned) fs_m_in.REQ_NBYTES;
|
||||
block_size = v_pri.logical_block_size_l;
|
||||
dir = v_pri.dir_rec_root;
|
||||
@@ -162,7 +162,7 @@ int fs_getdents(void)
|
||||
/* Get input parameters */
|
||||
ino = fs_m_in.REQ_INODE_NR;
|
||||
gid = fs_m_in.REQ_GRANT;
|
||||
pos = fs_m_in.REQ_SEEK_POS_LO;
|
||||
pos = fs_m_in.REQ_SEEK_POS;
|
||||
|
||||
block_size = v_pri.logical_block_size_l;
|
||||
cur_pos = pos; /* The current position */
|
||||
|
||||
@@ -62,7 +62,7 @@ int fs_readwrite(void)
|
||||
default: panic("odd request");
|
||||
}
|
||||
gid = (cp_grant_id_t) fs_m_in.REQ_GRANT;
|
||||
position = (off_t) fs_m_in.REQ_SEEK_POS_LO;
|
||||
position = (off_t) fs_m_in.REQ_SEEK_POS;
|
||||
nrbytes = (size_t) fs_m_in.REQ_NBYTES;
|
||||
|
||||
lmfs_reset_rdwt_err();
|
||||
@@ -165,8 +165,7 @@ int fs_breadwrite(void)
|
||||
/* Get the values from the request message */
|
||||
rw_flag = (fs_m_in.m_type == REQ_BREAD ? READING : WRITING);
|
||||
gid = (cp_grant_id_t) fs_m_in.REQ_GRANT;
|
||||
position = make64((unsigned long) fs_m_in.REQ_SEEK_POS_LO,
|
||||
(unsigned long) fs_m_in.REQ_SEEK_POS_HI);
|
||||
position = fs_m_in.REQ_SEEK_POS;
|
||||
nrbytes = (size_t) fs_m_in.REQ_NBYTES;
|
||||
|
||||
block_size = get_block_size(target_dev);
|
||||
@@ -621,7 +620,7 @@ int fs_getdents(void)
|
||||
ino = (pino_t) fs_m_in.REQ_INODE_NR;
|
||||
gid = (cp_grant_id_t) fs_m_in.REQ_GRANT;
|
||||
size = (size_t) fs_m_in.REQ_MEM_SIZE;
|
||||
pos = (off_t) fs_m_in.REQ_SEEK_POS_LO;
|
||||
pos = (off_t) fs_m_in.REQ_SEEK_POS;
|
||||
|
||||
/* Check whether the position is properly aligned */
|
||||
if( (unsigned int) pos % DIR_ENTRY_SIZE)
|
||||
|
||||
@@ -52,8 +52,7 @@ int req_breadwrite(
|
||||
m.m_type = rw_flag == READING ? REQ_BREAD : REQ_BWRITE;
|
||||
m.REQ_DEV = dev;
|
||||
m.REQ_GRANT = grant_id;
|
||||
m.REQ_SEEK_POS_LO = ex64lo(pos);
|
||||
m.REQ_SEEK_POS_HI = ex64hi(pos);
|
||||
m.REQ_SEEK_POS = pos;
|
||||
m.REQ_NBYTES = num_of_bytes;
|
||||
|
||||
/* Send/rec request */
|
||||
@@ -80,8 +79,7 @@ int req_bpeek(endpoint_t fs_e, dev_t dev, off_t pos, unsigned int num_of_bytes)
|
||||
/* Fill in request message */
|
||||
m.m_type = REQ_BPEEK;
|
||||
m.REQ_DEV = dev;
|
||||
m.REQ_SEEK_POS_LO = ex64lo(pos);
|
||||
m.REQ_SEEK_POS_HI = ex64hi(pos);
|
||||
m.REQ_SEEK_POS = pos;
|
||||
m.REQ_NBYTES = num_of_bytes;
|
||||
|
||||
/* Send/rec request */
|
||||
@@ -320,14 +318,10 @@ int req_getdents(
|
||||
m.REQ_INODE_NR = (pino_t) inode_nr;
|
||||
m.REQ_GRANT = grant_id;
|
||||
m.REQ_MEM_SIZE = size;
|
||||
m.REQ_SEEK_POS_LO = ex64lo(pos);
|
||||
if (vmp->m_fs_flags & RES_64BIT) {
|
||||
m.REQ_SEEK_POS_HI = ex64hi(pos);
|
||||
} else if (pos > INT_MAX) {
|
||||
m.REQ_SEEK_POS = pos;
|
||||
if (!(vmp->m_fs_flags & RES_64BIT) && (pos > INT_MAX)) {
|
||||
/* FS does not support 64-bit off_t and 32 bits is not enough */
|
||||
return EINVAL;
|
||||
} else {
|
||||
m.REQ_SEEK_POS_HI = 0;
|
||||
}
|
||||
|
||||
r = fs_sendrec(fs_e, &m);
|
||||
@@ -825,13 +819,9 @@ unsigned int *cum_iop)
|
||||
m.m_type = rw_flag == READING ? REQ_READ : REQ_WRITE;
|
||||
m.REQ_INODE_NR = (pino_t) inode_nr;
|
||||
m.REQ_GRANT = grant_id;
|
||||
m.REQ_SEEK_POS_LO = ex64lo(pos);
|
||||
if (vmp->m_fs_flags & RES_64BIT) {
|
||||
m.REQ_SEEK_POS_HI = ex64hi(pos);
|
||||
} else if (pos > INT_MAX) {
|
||||
m.REQ_SEEK_POS = pos;
|
||||
if ((!(vmp->m_fs_flags & RES_64BIT)) && (pos > INT_MAX)) {
|
||||
return EINVAL;
|
||||
} else {
|
||||
m.REQ_SEEK_POS_HI = 0;
|
||||
}
|
||||
m.REQ_NBYTES = num_of_bytes;
|
||||
|
||||
@@ -868,8 +858,7 @@ int req_peek(endpoint_t fs_e, ino_t inode_nr, off_t pos, unsigned int bytes)
|
||||
m.m_type = REQ_PEEK;
|
||||
m.REQ_INODE_NR = inode_nr;
|
||||
m.REQ_GRANT = -1;
|
||||
m.REQ_SEEK_POS_LO = ex64lo(pos);
|
||||
m.REQ_SEEK_POS_HI = 0; /* Not used for now, so clear it. */
|
||||
m.REQ_SEEK_POS = pos;
|
||||
m.REQ_NBYTES = bytes;
|
||||
|
||||
/* Send/rec request */
|
||||
|
||||
Reference in New Issue
Block a user