|
@@ -165,7 +165,7 @@ static ssize_t f2fs_sbi_show(struct f2fs_attr *a,
|
|
|
return snprintf(buf, PAGE_SIZE, "%u\n", *ui);
|
|
|
}
|
|
|
|
|
|
-static ssize_t f2fs_sbi_store(struct f2fs_attr *a,
|
|
|
+static ssize_t __f2fs_sbi_store(struct f2fs_attr *a,
|
|
|
struct f2fs_sb_info *sbi,
|
|
|
const char *buf, size_t count)
|
|
|
{
|
|
@@ -278,6 +278,23 @@ out:
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
+static ssize_t f2fs_sbi_store(struct f2fs_attr *a,
|
|
|
+ struct f2fs_sb_info *sbi,
|
|
|
+ const char *buf, size_t count)
|
|
|
+{
|
|
|
+ ssize_t ret;
|
|
|
+ bool gc_entry = (!strcmp(a->attr.name, "gc_urgent") ||
|
|
|
+ a->struct_type == GC_THREAD);
|
|
|
+
|
|
|
+ if (gc_entry)
|
|
|
+ down_read(&sbi->sb->s_umount);
|
|
|
+ ret = __f2fs_sbi_store(a, sbi, buf, count);
|
|
|
+ if (gc_entry)
|
|
|
+ up_read(&sbi->sb->s_umount);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
static ssize_t f2fs_attr_show(struct kobject *kobj,
|
|
|
struct attribute *attr, char *buf)
|
|
|
{
|