64-bit REQ_SEEK_POS

Change-Id: I2e51a188b171af0f0a02349e4eccbe78e7cc2e0c
This commit is contained in:
Ben Gras
2014-02-24 14:50:01 +01:00
committed by Lionel Sambuc
parent 3c7f4e462e
commit 978082bb0d
11 changed files with 30 additions and 46 deletions

View File

@@ -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)

View File

@@ -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 */

View File

@@ -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)

View File

@@ -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 */