projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix copyright
[yaffs2.git]
/
yaffs_vfs_multi.c
diff --git
a/yaffs_vfs_multi.c
b/yaffs_vfs_multi.c
index d70d406560ed527a24538aa1010ed95f65da518c..707fcb39911417b3fe3d67301110a647135e7c59 100644
(file)
--- a/
yaffs_vfs_multi.c
+++ b/
yaffs_vfs_multi.c
@@
-1,8
+1,7
@@
/*
* YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
/*
* YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
- * Copyright (C) 2002-2011 Aleph One Ltd.
- * for Toby Churchill Ltd and Brightstar Engineering
+ * Copyright (C) 2002-2018 Aleph One Ltd.
*
* Created by Charles Manning <charles@aleph1.co.uk>
* Acknowledgements:
*
* Created by Charles Manning <charles@aleph1.co.uk>
* Acknowledgements:
@@
-241,6
+240,10
@@
MODULE_PARM(yaffs_gc_control, "i");
#define YAFFS_USE_DIR_ITERATE
#endif
#define YAFFS_USE_DIR_ITERATE
#endif
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0))
+#define YAFFS_USE_XATTR
+#endif
+
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
#define YAFFS_NEW_PROCFS
#include <linux/seq_file.h>
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
#define YAFFS_NEW_PROCFS
#include <linux/seq_file.h>
@@
-263,6
+266,13
@@
MODULE_PARM(yaffs_gc_control, "i");
(dir)->i_ctime = (dir)->i_mtime = CURRENT_TIME; \
} while (0)
(dir)->i_ctime = (dir)->i_mtime = CURRENT_TIME; \
} while (0)
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0))
+static inline int setattr_prepare(struct dentry *dentry, struct iattr *attr)
+{
+ return inode_change_ok(dentry->d_inode, attr);
+}
+#endif
+
static void yaffs_fill_inode_from_obj(struct inode *inode,
struct yaffs_obj *obj);
static void yaffs_fill_inode_from_obj(struct inode *inode,
struct yaffs_obj *obj);
@@
-895,7
+905,7
@@
static int yaffs_setattr(struct dentry *dentry, struct iattr *attr)
#endif
if (error == 0)
#endif
if (error == 0)
- error =
inode_change_ok(inode
, attr);
+ error =
setattr_prepare(dentry
, attr);
if (error == 0) {
int result;
if (!error) {
if (error == 0) {
int result;
if (!error) {
@@
-929,6
+939,7
@@
static int yaffs_setattr(struct dentry *dentry, struct iattr *attr)
return error;
}
return error;
}
+#ifdef YAFFS_USE_XATTR
#if (YAFFS_NEW_XATTR > 0)
static int yaffs_setxattr(struct dentry *dentry, struct inode *inode,
const char *name, const void *value, size_t size, int flags)
#if (YAFFS_NEW_XATTR > 0)
static int yaffs_setxattr(struct dentry *dentry, struct inode *inode,
const char *name, const void *value, size_t size, int flags)
@@
-1019,6
+1030,7
@@
static int yaffs_removexattr(struct dentry *dentry, const char *name)
return error;
}
return error;
}
+#endif
static ssize_t yaffs_listxattr(struct dentry * dentry, char *buff, size_t size)
{
static ssize_t yaffs_listxattr(struct dentry * dentry, char *buff, size_t size)
{
@@
-1046,10
+1058,12
@@
static ssize_t yaffs_listxattr(struct dentry * dentry, char *buff, size_t size)
static const struct inode_operations yaffs_file_inode_operations = {
.setattr = yaffs_setattr,
static const struct inode_operations yaffs_file_inode_operations = {
.setattr = yaffs_setattr,
+#ifdef YAFFS_USE_XATTR
.setxattr = yaffs_setxattr,
.getxattr = yaffs_getxattr,
.setxattr = yaffs_setxattr,
.getxattr = yaffs_getxattr,
- .listxattr = yaffs_listxattr,
.removexattr = yaffs_removexattr,
.removexattr = yaffs_removexattr,
+#endif
+ .listxattr = yaffs_listxattr,
};
};
@@
-1173,10
+1187,12
@@
static const struct inode_operations yaffs_symlink_inode_operations = {
.put_link = yaffs_put_link,
#endif
.setattr = yaffs_setattr,
.put_link = yaffs_put_link,
#endif
.setattr = yaffs_setattr,
+#ifdef YAFFS_USE_XATTR
.setxattr = yaffs_setxattr,
.getxattr = yaffs_getxattr,
.setxattr = yaffs_setxattr,
.getxattr = yaffs_getxattr,
- .listxattr = yaffs_listxattr,
.removexattr = yaffs_removexattr,
.removexattr = yaffs_removexattr,
+#endif
+ .listxattr = yaffs_listxattr,
};
#ifdef YAFFS_USE_OWN_IGET
};
#ifdef YAFFS_USE_OWN_IGET
@@
-1558,8
+1574,13
@@
static int yaffs_symlink(struct inode *dir, struct dentry *dentry,
*
* NB: POSIX says you can rename an object over an old object of the same name
*/
*
* NB: POSIX says you can rename an object over an old object of the same name
*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0))
+static int yaffs_rename(struct inode *old_dir, struct dentry *old_dentry,
+ struct inode *new_dir, struct dentry *new_dentry, unsigned int unused)
+#else
static int yaffs_rename(struct inode *old_dir, struct dentry *old_dentry,
struct inode *new_dir, struct dentry *new_dentry)
static int yaffs_rename(struct inode *old_dir, struct dentry *old_dentry,
struct inode *new_dir, struct dentry *new_dentry)
+#endif
{
struct yaffs_dev *dev;
int ret_val = YAFFS_FAIL;
{
struct yaffs_dev *dev;
int ret_val = YAFFS_FAIL;
@@
-1647,10
+1668,12
@@
static const struct inode_operations yaffs_dir_inode_operations = {
.mknod = yaffs_mknod,
.rename = yaffs_rename,
.setattr = yaffs_setattr,
.mknod = yaffs_mknod,
.rename = yaffs_rename,
.setattr = yaffs_setattr,
+ .listxattr = yaffs_listxattr,
+#ifdef YAFFS_USE_XATTR
.setxattr = yaffs_setxattr,
.getxattr = yaffs_getxattr,
.setxattr = yaffs_setxattr,
.getxattr = yaffs_getxattr,
- .listxattr = yaffs_listxattr,
.removexattr = yaffs_removexattr,
.removexattr = yaffs_removexattr,
+#endif
};
/*-----------------------------------------------------------------*/
};
/*-----------------------------------------------------------------*/