|
@@ -77,19 +77,22 @@ static int nilfs_mdt_create_block(struct inode *inode, unsigned long block,
|
|
void *))
|
|
void *))
|
|
{
|
|
{
|
|
struct the_nilfs *nilfs = NILFS_MDT(inode)->mi_nilfs;
|
|
struct the_nilfs *nilfs = NILFS_MDT(inode)->mi_nilfs;
|
|
- struct nilfs_sb_info *writer = NULL;
|
|
|
|
struct super_block *sb = inode->i_sb;
|
|
struct super_block *sb = inode->i_sb;
|
|
struct nilfs_transaction_info ti;
|
|
struct nilfs_transaction_info ti;
|
|
struct buffer_head *bh;
|
|
struct buffer_head *bh;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if (!sb) {
|
|
if (!sb) {
|
|
- writer = nilfs_get_writer(nilfs);
|
|
|
|
- if (!writer) {
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Make sure this function is not called from any
|
|
|
|
+ * read-only context.
|
|
|
|
+ */
|
|
|
|
+ if (!nilfs->ns_writer) {
|
|
|
|
+ WARN_ON(1);
|
|
err = -EROFS;
|
|
err = -EROFS;
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
- sb = writer->s_super;
|
|
|
|
|
|
+ sb = nilfs->ns_writer->s_super;
|
|
}
|
|
}
|
|
|
|
|
|
nilfs_transaction_begin(sb, &ti, 0);
|
|
nilfs_transaction_begin(sb, &ti, 0);
|
|
@@ -127,8 +130,6 @@ static int nilfs_mdt_create_block(struct inode *inode, unsigned long block,
|
|
err = nilfs_transaction_commit(sb);
|
|
err = nilfs_transaction_commit(sb);
|
|
else
|
|
else
|
|
nilfs_transaction_abort(sb);
|
|
nilfs_transaction_abort(sb);
|
|
- if (writer)
|
|
|
|
- nilfs_put_writer(nilfs);
|
|
|
|
out:
|
|
out:
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|