[PATCH v3 36/39] ubifs: implement ubifs_get_qsize to get quota size in ubifs
Dongsheng Yang
yangds.fnst at cn.fujitsu.com
Tue Sep 15 02:02:31 PDT 2015
We only care the size of regular file in ubifs for quota.
The reason is similar with the comment in ubifs_getattr().
Signed-off-by: Dongsheng Yang <yangds.fnst at cn.fujitsu.com>
---
fs/ubifs/dir.c | 3 +++
fs/ubifs/file.c | 22 ++++++++++++++++++++++
fs/ubifs/ubifs.h | 1 +
3 files changed, 26 insertions(+)
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index 802c6ad..0d3d6d3 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -1205,6 +1205,9 @@ const struct inode_operations ubifs_dir_inode_operations = {
#ifdef CONFIG_UBIFS_ATIME_SUPPORT
.update_time = ubifs_update_time,
#endif
+#ifdef CONFIG_QUOTA
+ .get_qsize = ubifs_get_qsize,
+#endif
};
const struct file_operations ubifs_dir_operations = {
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index b57ccf3..f1d792a 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1636,6 +1636,22 @@ static int ubifs_file_mmap(struct file *file, struct vm_area_struct *vma)
return 0;
}
+/*
+ * ubifs_get_qsize: get the quota size of a file
+ * @inode: inode which we are going to get the qsize
+ *
+ * We only care the size of regular file in ubifs
+ * for quota. The reason is similar with the comment
+ * in ubifs_getattr().
+ */
+ssize_t ubifs_get_qsize(struct inode *inode)
+{
+ if (S_ISREG(inode->i_mode))
+ return i_size_read(inode);
+ else
+ return 0;
+}
+
const struct address_space_operations ubifs_file_address_operations = {
.readpage = ubifs_readpage,
.writepage = ubifs_writepage,
@@ -1656,6 +1672,9 @@ const struct inode_operations ubifs_file_inode_operations = {
#ifdef CONFIG_UBIFS_ATIME_SUPPORT
.update_time = ubifs_update_time,
#endif
+#ifdef CONFIG_QUOTA
+ .get_qsize = ubifs_get_qsize,
+#endif
};
const struct inode_operations ubifs_symlink_inode_operations = {
@@ -1670,6 +1689,9 @@ const struct inode_operations ubifs_symlink_inode_operations = {
#ifdef CONFIG_UBIFS_ATIME_SUPPORT
.update_time = ubifs_update_time,
#endif
+#ifdef CONFIG_QUOTA
+ .get_qsize = ubifs_get_qsize,
+#endif
};
const struct file_operations ubifs_file_operations = {
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index 99cf10c..21b5dc0 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -1759,6 +1759,7 @@ int ubifs_read_block(struct inode *inode, void *addr, unsigned int block,
int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync);
int ubifs_setattr(struct dentry *dentry, struct iattr *attr);
int ubifs_update_time(struct inode *inode, struct timespec *time, int flags);
+ssize_t ubifs_get_qsize(struct inode *inode);
/* dir.c */
struct inode *ubifs_new_inode(struct ubifs_info *c, const struct inode *dir,
--
1.8.4.2
More information about the linux-mtd
mailing list