#include <linux/buffer_head.h>
#include <linux/mpage.h>
#include <linux/writeback.h>
+#include <linux/vserver/xid.h>
extern int reiserfs_default_io_size; /* default io size devuned in super.c */
struct buffer_head * bh;
struct item_head * ih;
__u32 rdev;
+ uid_t uid;
+ gid_t gid;
//int version = ITEM_VERSION_1;
bh = PATH_PLAST_BUFFER (path);
struct stat_data_v1 * sd = (struct stat_data_v1 *)B_I_PITEM (bh, ih);
unsigned long blocks;
+ uid = sd_v1_uid(sd);
+ gid = sd_v1_gid(sd);
+
set_inode_item_key_version (inode, KEY_FORMAT_3_5);
set_inode_sd_version (inode, STAT_DATA_V1);
inode->i_mode = sd_v1_mode(sd);
inode->i_nlink = sd_v1_nlink(sd);
- inode->i_uid = sd_v1_uid(sd);
- inode->i_gid = sd_v1_gid(sd);
inode->i_size = sd_v1_size(sd);
inode->i_atime.tv_sec = sd_v1_atime(sd);
inode->i_mtime.tv_sec = sd_v1_mtime(sd);
// (directories and symlinks)
struct stat_data * sd = (struct stat_data *)B_I_PITEM (bh, ih);
+ uid = sd_v2_uid(sd);
+ gid = sd_v2_gid(sd);
+
inode->i_mode = sd_v2_mode(sd);
inode->i_nlink = sd_v2_nlink(sd);
- inode->i_uid = sd_v2_uid(sd);
inode->i_size = sd_v2_size(sd);
- inode->i_gid = sd_v2_gid(sd);
inode->i_mtime.tv_sec = sd_v2_mtime(sd);
inode->i_atime.tv_sec = sd_v2_atime(sd);
inode->i_ctime.tv_sec = sd_v2_ctime(sd);
REISERFS_I(inode)->i_attrs = sd_v2_attrs( sd );
sd_attrs_to_i_attrs( sd_v2_attrs( sd ), inode );
}
+ inode->i_uid = INOXID_UID(uid, gid);
+ inode->i_gid = INOXID_GID(uid, gid);
+ inode->i_xid = INOXID_XID(uid, gid, 0);
pathrelse (path);
if (S_ISREG (inode->i_mode)) {
static void inode2sd (void * sd, struct inode * inode)
{
struct stat_data * sd_v2 = (struct stat_data *)sd;
+ uid_t uid = XIDINO_UID(inode->i_uid, inode->i_xid);
+ gid_t gid = XIDINO_GID(inode->i_gid, inode->i_xid);
__u16 flags;
+ set_sd_v2_uid(sd_v2, uid );
+ set_sd_v2_gid(sd_v2, gid );
set_sd_v2_mode(sd_v2, inode->i_mode );
set_sd_v2_nlink(sd_v2, inode->i_nlink );
- set_sd_v2_uid(sd_v2, inode->i_uid );
set_sd_v2_size(sd_v2, inode->i_size );
- set_sd_v2_gid(sd_v2, inode->i_gid );
set_sd_v2_mtime(sd_v2, inode->i_mtime.tv_sec );
set_sd_v2_atime(sd_v2, inode->i_atime.tv_sec );
set_sd_v2_ctime(sd_v2, inode->i_ctime.tv_sec );
inode -> i_flags |= S_IMMUTABLE;
else
inode -> i_flags &= ~S_IMMUTABLE;
+ if( sd_attrs & REISERFS_IUNLINK_FL )
+ inode -> i_flags |= S_IUNLINK;
+ else
+ inode -> i_flags &= ~S_IUNLINK;
+ if( sd_attrs & REISERFS_BARRIER_FL )
+ inode -> i_flags |= S_BARRIER;
+ else
+ inode -> i_flags &= ~S_BARRIER;
if( sd_attrs & REISERFS_APPEND_FL )
inode -> i_flags |= S_APPEND;
else
*sd_attrs |= REISERFS_IMMUTABLE_FL;
else
*sd_attrs &= ~REISERFS_IMMUTABLE_FL;
+ if( inode -> i_flags & S_IUNLINK )
+ *sd_attrs |= REISERFS_IUNLINK_FL;
+ else
+ *sd_attrs &= ~REISERFS_IUNLINK_FL;
+ if( inode -> i_flags & S_BARRIER )
+ *sd_attrs |= REISERFS_BARRIER_FL;
+ else
+ *sd_attrs &= ~REISERFS_BARRIER_FL;
if( inode -> i_flags & S_SYNC )
*sd_attrs |= REISERFS_SYNC_FL;
else