vserver 2.0 rc7
[linux-2.6.git] / fs / reiserfs / inode.c
index d44d122..b116615 100644 (file)
@@ -174,7 +174,7 @@ static inline void fix_tail_page_for_writing(struct page *page) {
    done already or non-hole position has been found in the indirect item */
 static inline int allocation_needed (int retval, b_blocknr_t allocated, 
                                     struct item_head * ih,
-                                    __u32 * item, int pos_in_item)
+                                    __le32 * item, int pos_in_item)
 {
   if (allocated)
         return 0;
@@ -279,7 +279,7 @@ research:
     bh = get_last_bh (&path);
     ih = get_ih (&path);
     if (is_indirect_le_ih (ih)) {
-       __u32 * ind_item = (__u32 *)B_I_PITEM (bh, ih);
+       __le32 * ind_item = (__le32 *)B_I_PITEM (bh, ih);
        
        /* FIXME: here we could cache indirect item or part of it in
           the inode to avoid search_by_key in case of subsequent
@@ -582,7 +582,7 @@ int reiserfs_get_block (struct inode * inode, sector_t block,
     struct cpu_key key;
     struct buffer_head * bh, * unbh = NULL;
     struct item_head * ih, tmp_ih;
-    __u32 * item;
+    __le32 * item;
     int done;
     int fs_gen;
     struct reiserfs_transaction_handle *th = NULL;
@@ -747,7 +747,7 @@ start_trans:
     done = 0;
     do {
        if (is_statdata_le_ih (ih)) {
-           __u32 unp = 0;
+           __le32 unp = 0;
            struct cpu_key tmp_key;
 
            /* indirect item has to be inserted */
@@ -1351,8 +1351,8 @@ void reiserfs_read_locked_inode (struct inode * inode, struct reiserfs_iget_args
     key.version = KEY_FORMAT_3_5;
     key.on_disk_key.k_dir_id = dirino;
     key.on_disk_key.k_objectid = inode->i_ino;
-    key.on_disk_key.u.k_offset_v1.k_offset = SD_OFFSET;
-    key.on_disk_key.u.k_offset_v1.k_uniqueness = SD_UNIQUENESS;
+    key.on_disk_key.k_offset = 0;
+    key.on_disk_key.k_type = 0;
 
     /* look for the object's stat data */
     retval = search_item (inode->i_sb, &key, &path_to_sd);
@@ -1853,6 +1853,8 @@ int reiserfs_new_inode (struct reiserfs_transaction_handle *th,
     } else if (inode->i_sb->s_flags & MS_POSIXACL) {
        reiserfs_warning (inode->i_sb, "ACLs aren't enabled in the fs, "
                          "but vfs thinks they are!");
+    } else if (is_reiserfs_priv_object (dir)) {
+       reiserfs_mark_inode_private (inode);
     }
 
     insert_inode_hash (inode);
@@ -2075,7 +2077,7 @@ static int map_block_for_writepage(struct inode *inode,
     struct item_head tmp_ih ;
     struct item_head *ih ;
     struct buffer_head *bh ;
-    __u32 *item ;
+    __le32 *item ;
     struct cpu_key key ;
     INITIALIZE_PATH(path) ;
     int pos_in_item ;
@@ -2840,7 +2842,8 @@ int reiserfs_setattr(struct dentry *dentry, struct iattr *attr) {
 
     if (!error) {
        if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
-           (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) {
+           (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid) ||
+           (ia_valid & ATTR_XID && attr->ia_xid != inode->i_xid)) {
                 error = reiserfs_chown_xattrs (inode, attr);
 
                 if (!error) {
@@ -2859,6 +2862,8 @@ int reiserfs_setattr(struct dentry *dentry, struct iattr *attr) {
                        inode->i_uid = attr->ia_uid;
                    if (attr->ia_valid & ATTR_GID)
                        inode->i_gid = attr->ia_gid;
+                   if (attr->ia_valid & ATTR_XID)
+                       inode->i_xid = attr->ia_xid;
                    mark_inode_dirty(inode);
                    journal_end(&th, inode->i_sb, 4*REISERFS_QUOTA_INIT_BLOCKS+2);
                }