projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
switch ->setxattr() to passing dentry and inode separately
[deliverable/linux.git]
/
fs
/
kernfs
/
inode.c
diff --git
a/fs/kernfs/inode.c
b/fs/kernfs/inode.c
index b5247226732b3cb09460c97bb8fb0b0243d3bb2a..63b925d5ba1e43c67a83dfc1c92f59325fc954ba 100644
(file)
--- a/
fs/kernfs/inode.c
+++ b/
fs/kernfs/inode.c
@@
-54,7
+54,10
@@
static struct kernfs_iattrs *kernfs_iattrs(struct kernfs_node *kn)
iattrs->ia_mode = kn->mode;
iattrs->ia_uid = GLOBAL_ROOT_UID;
iattrs->ia_gid = GLOBAL_ROOT_GID;
iattrs->ia_mode = kn->mode;
iattrs->ia_uid = GLOBAL_ROOT_UID;
iattrs->ia_gid = GLOBAL_ROOT_GID;
- iattrs->ia_atime = iattrs->ia_mtime = iattrs->ia_ctime = CURRENT_TIME;
+
+ ktime_get_real_ts(&iattrs->ia_atime);
+ iattrs->ia_mtime = iattrs->ia_atime;
+ iattrs->ia_ctime = iattrs->ia_atime;
simple_xattrs_init(&kn->iattr->xattrs);
out_unlock:
simple_xattrs_init(&kn->iattr->xattrs);
out_unlock:
@@
-157,10
+160,11
@@
static int kernfs_node_setsecdata(struct kernfs_node *kn, void **secdata,
return 0;
}
return 0;
}
-int kernfs_iop_setxattr(struct dentry *dentry, const char *name,
- const void *value, size_t size, int flags)
+int kernfs_iop_setxattr(struct dentry *unused, struct inode *inode,
+ const char *name, const void *value,
+ size_t size, int flags)
{
{
- struct kernfs_node *kn =
dentry->d_fsdata
;
+ struct kernfs_node *kn =
inode->i_private
;
struct kernfs_iattrs *attrs;
void *secdata;
int error;
struct kernfs_iattrs *attrs;
void *secdata;
int error;
@@
-172,11
+176,11
@@
int kernfs_iop_setxattr(struct dentry *dentry, const char *name,
if (!strncmp(name, XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN)) {
const char *suffix = name + XATTR_SECURITY_PREFIX_LEN;
if (!strncmp(name, XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN)) {
const char *suffix = name + XATTR_SECURITY_PREFIX_LEN;
- error = security_inode_setsecurity(
d_inode(dentry)
, suffix,
+ error = security_inode_setsecurity(
inode
, suffix,
value, size, flags);
if (error)
return error;
value, size, flags);
if (error)
return error;
- error = security_inode_getsecctx(
d_inode(dentry)
,
+ error = security_inode_getsecctx(
inode
,
&secdata, &secdata_len);
if (error)
return error;
&secdata, &secdata_len);
if (error)
return error;
@@
-236,16
+240,18
@@
ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size)
static inline void set_default_inode_attr(struct inode *inode, umode_t mode)
{
inode->i_mode = mode;
static inline void set_default_inode_attr(struct inode *inode, umode_t mode)
{
inode->i_mode = mode;
- inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+ inode->i_atime = inode->i_mtime =
+ inode->i_ctime = current_fs_time(inode->i_sb);
}
static inline void set_inode_attr(struct inode *inode, struct iattr *iattr)
{
}
static inline void set_inode_attr(struct inode *inode, struct iattr *iattr)
{
+ struct super_block *sb = inode->i_sb;
inode->i_uid = iattr->ia_uid;
inode->i_gid = iattr->ia_gid;
inode->i_uid = iattr->ia_uid;
inode->i_gid = iattr->ia_gid;
- inode->i_atime =
iattr->ia_atime
;
- inode->i_mtime =
iattr->ia_mtime
;
- inode->i_ctime =
iattr->ia_ctime
;
+ inode->i_atime =
timespec_trunc(iattr->ia_atime, sb->s_time_gran)
;
+ inode->i_mtime =
timespec_trunc(iattr->ia_mtime, sb->s_time_gran)
;
+ inode->i_ctime =
timespec_trunc(iattr->ia_ctime, sb->s_time_gran)
;
}
static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode)
}
static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode)
This page took
0.033011 seconds
and
5
git commands to generate.