提交 802d3177 编写于 作者: R Ryusuke Konishi

nilfs2: add nodiscard mount option

Nilfs has "discard" mount option which issues discard/TRIM commands to
underlying block device, but it lacks a complementary option and has
no way to disable the feature through remount.

This adds "nodiscard" option to resolve this imbalance.
Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
上级 773bc4f3
...@@ -77,9 +77,10 @@ norecovery Disable recovery of the filesystem on mount. ...@@ -77,9 +77,10 @@ norecovery Disable recovery of the filesystem on mount.
This disables every write access on the device for This disables every write access on the device for
read-only mounts or snapshots. This option will fail read-only mounts or snapshots. This option will fail
for r/w mounts on an unclean volume. for r/w mounts on an unclean volume.
discard Issue discard/TRIM commands to the underlying block discard This enables/disables the use of discard/TRIM commands.
device when blocks are freed. This is useful for SSD nodiscard(*) The discard/TRIM commands are sent to the underlying
devices and sparse/thinly-provisioned LUNs. block device when blocks are freed. This is useful
for SSD devices and sparse/thinly-provisioned LUNs.
NILFS2 usage NILFS2 usage
============ ============
......
...@@ -604,7 +604,7 @@ static const struct export_operations nilfs_export_ops = { ...@@ -604,7 +604,7 @@ static const struct export_operations nilfs_export_ops = {
enum { enum {
Opt_err_cont, Opt_err_panic, Opt_err_ro, Opt_err_cont, Opt_err_panic, Opt_err_ro,
Opt_barrier, Opt_nobarrier, Opt_snapshot, Opt_order, Opt_norecovery, Opt_barrier, Opt_nobarrier, Opt_snapshot, Opt_order, Opt_norecovery,
Opt_discard, Opt_err, Opt_discard, Opt_nodiscard, Opt_err,
}; };
static match_table_t tokens = { static match_table_t tokens = {
...@@ -617,6 +617,7 @@ static match_table_t tokens = { ...@@ -617,6 +617,7 @@ static match_table_t tokens = {
{Opt_order, "order=%s"}, {Opt_order, "order=%s"},
{Opt_norecovery, "norecovery"}, {Opt_norecovery, "norecovery"},
{Opt_discard, "discard"}, {Opt_discard, "discard"},
{Opt_nodiscard, "nodiscard"},
{Opt_err, NULL} {Opt_err, NULL}
}; };
...@@ -676,6 +677,9 @@ static int parse_options(char *options, struct super_block *sb) ...@@ -676,6 +677,9 @@ static int parse_options(char *options, struct super_block *sb)
case Opt_discard: case Opt_discard:
nilfs_set_opt(sbi, DISCARD); nilfs_set_opt(sbi, DISCARD);
break; break;
case Opt_nodiscard:
nilfs_clear_opt(sbi, DISCARD);
break;
default: default:
printk(KERN_ERR printk(KERN_ERR
"NILFS: Unrecognized mount option \"%s\"\n", p); "NILFS: Unrecognized mount option \"%s\"\n", p);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册