]> Zhao Yanbai Git Server - minix.git/commitdiff
Message types for VFS ftrunc
authorLionel Sambuc <lionel@minix3.org>
Tue, 29 Apr 2014 17:33:47 +0000 (19:33 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:26 +0000 (17:05 +0200)
Change-Id: I593a4d91b1d974f632f6cb4eb23aabee5b65df7b

include/minix/ipc.h
lib/libpuffs/link.c
lib/libsffs/write.c
servers/ext2/link.c
servers/mfs/link.c
servers/pfs/link.c
servers/vfs/request.c

index 7bc5cc2935e1a02abff2bdfdfb944893c74a2de0..95dcea1b16a8d20cad3363b62515d990c4846fd5 100644 (file)
@@ -178,6 +178,15 @@ typedef struct {
 } mess_vfs_fs_flush;
 _ASSERT_MSG_SIZE(mess_vfs_fs_flush);
 
+typedef struct {
+       ino_t inode;
+       off_t trc_start;
+       off_t trc_end;
+
+       uint8_t data[32];
+} mess_vfs_fs_ftrunc;
+_ASSERT_MSG_SIZE(mess_vfs_fs_ftrunc);
+
 typedef struct {
        ino_t dir_ino;
        ino_t root_ino;
@@ -356,6 +365,7 @@ typedef struct {
        mess_vfs_fs_create m_vfs_fs_create;
        mess_fs_vfs_create m_fs_vfs_create;
        mess_vfs_fs_flush m_vfs_fs_flush;
+       mess_vfs_fs_ftrunc m_vfs_fs_ftrunc;
        mess_vfs_fs_lookup m_vfs_fs_lookup;
        mess_fs_vfs_lookup m_fs_vfs_lookup;
        mess_vfs_fs_mountpoint m_vfs_fs_mountpoint;
index 19ee0242a7928196a1b6e50087f4843934bab44a..f40c265621ea031e8932de3c70cb83885f8e36fe 100644 (file)
@@ -19,11 +19,11 @@ int fs_ftrunc(void)
   off_t start, end;
   PUFFS_MAKECRED(pcr, &global_kcred);
 
-  if ((pn = puffs_pn_nodewalk(global_pu, 0, &fs_m_in.REQ_INODE_NR)) == NULL)
+  if ((pn = puffs_pn_nodewalk(global_pu, 0, &fs_m_in.m_vfs_fs_ftrunc.inode)) == NULL)
           return(EINVAL);
 
-  start = fs_m_in.REQ_TRC_START;
-  end = fs_m_in.REQ_TRC_END;
+  start = fs_m_in.m_vfs_fs_ftrunc.trc_start;
+  end = fs_m_in.m_vfs_fs_ftrunc.trc_end;
 
   if (end == 0) {
        struct vattr va;
index 4d852ea997e6f5f0a89721248c9b0edf5e7ad6ec..22cbfa7d2743901ce7e10c02cff2ff7deb157b55 100644 (file)
@@ -126,13 +126,13 @@ int do_ftrunc(void)
   if (state.s_read_only)
        return EROFS;
 
-  if ((ino = find_inode(m_in.REQ_INODE_NR)) == NULL)
+  if ((ino = find_inode(m_in.m_vfs_fs_ftrunc.inode)) == NULL)
        return EINVAL;
 
   if (IS_DIR(ino)) return EISDIR;
 
-  start = m_in.REQ_TRC_START;
-  end = m_in.REQ_TRC_END;
+  start = m_in.m_vfs_fs_ftrunc.trc_start;
+  end = m_in.m_vfs_fs_ftrunc.trc_end;
 
   if (end == 0) {
        /* Truncate or expand the file. */
index b32fabd833ac7e80d063f6c028f1f8aa51f349bc..b61613e9a576cf6adebb415bb9ad4bbe511d76b2 100644 (file)
@@ -520,11 +520,11 @@ int fs_ftrunc(void)
   off_t start, end;
   int r;
 
-  if( (rip = find_inode(fs_dev, (pino_t) fs_m_in.REQ_INODE_NR)) == NULL)
+  if( (rip = find_inode(fs_dev, fs_m_in.m_vfs_fs_ftrunc.inode)) == NULL)
          return(EINVAL);
 
-  start = fs_m_in.REQ_TRC_START;
-  end = fs_m_in.REQ_TRC_END;
+  start = fs_m_in.m_vfs_fs_ftrunc.trc_start;
+  end = fs_m_in.m_vfs_fs_ftrunc.trc_end;
 
   if (end == 0)
          r = truncate_inode(rip, start);
index dd99e11eeb3d66acc5a05cf80541a10986745941..9c25592856c6ead96b3836a87fbb75c92f168cda 100644 (file)
@@ -492,14 +492,14 @@ int fs_ftrunc(void)
   off_t start, end;
   int r;
   
-  if( (rip = find_inode(fs_dev, (pino_t) fs_m_in.REQ_INODE_NR)) == NULL)
+  if( (rip = find_inode(fs_dev, fs_m_in.m_vfs_fs_ftrunc.inode)) == NULL)
          return(EINVAL);
 
   if(rip->i_sp->s_rd_only) {
        r = EROFS;
   } else {
-    start = fs_m_in.REQ_TRC_START;
-    end = fs_m_in.REQ_TRC_END;
+    start = fs_m_in.m_vfs_fs_ftrunc.trc_start;
+    end = fs_m_in.m_vfs_fs_ftrunc.trc_end;
 
     if (end == 0)
          r = truncate_inode(rip, start);
index 3648c4e0462c99a809e84f4f39c3d97bc07bcb8f..7b1286d51fc4eb6a95e6fa07c7dbdbf86c9eaa5c 100644 (file)
@@ -10,13 +10,13 @@ int fs_ftrunc(message *fs_m_in, message *fs_m_out)
 {
   struct inode *rip;
   off_t start;
-  pino_t inumb;
+  ino_t inumb;
 
-  inumb = (pino_t) fs_m_in->REQ_INODE_NR;
+  inumb = fs_m_in->m_vfs_fs_ftrunc.inode;
 
   if( (rip = find_inode(inumb)) == NULL) return(EINVAL);
 
-  start = fs_m_in->REQ_TRC_START;
+  start = fs_m_in->m_vfs_fs_ftrunc.trc_start;
 
   return truncate_inode(rip, start);
 }
index 14cc3cf7d333a75bd361fa3421731452d57563d3..23350b9c9ffac3d510c1cb7df86a4f5240f64a03 100644 (file)
@@ -265,9 +265,9 @@ int req_ftrunc(endpoint_t fs_e, ino_t inode_nr, off_t start, off_t end)
 
   /* Fill in request message */
   m.m_type = REQ_FTRUNC;
-  m.REQ_INODE_NR = (pino_t) inode_nr;
-  m.REQ_TRC_START = start;
-  m.REQ_TRC_END = end;
+  m.m_vfs_fs_ftrunc.inode = inode_nr;
+  m.m_vfs_fs_ftrunc.trc_start = start;
+  m.m_vfs_fs_ftrunc.trc_end = end;
 
   if (!(vmp->m_fs_flags & RES_64BIT) &&
        ((start > INT_MAX) || (end > INT_MAX))) {