to try and truncate the file, which calls osc_punch() to remove blocks we
didn't write in the first place).
struct inode *inode = page->mapping->host;
struct ll_inode_info *lii = ll_i2info(inode);
struct lov_stripe_md *md = lii->lli_smd;
- struct brw_page pg;
- int err;
- struct iattr iattr;
+ struct brw_page pg;
+ int err;
+ struct iattr iattr;
struct io_cb_data *cbd = ll_init_cb();
pg.pg = page;
pg.flag = create ? OBD_BRW_CREATE : 0;
ENTRY;
- if (!cbd)
- RETURN(-ENOMEM);
+ if (!cbd)
+ RETURN(-ENOMEM);
SetPageUptodate(page);
1, &pg, ll_sync_io_cb, cbd);
kunmap(page);
+ if (err)
+ GOTO(out, err);
+
iattr.ia_size = pg.off + pg.count;
if (iattr.ia_size > inode->i_size) {
/* do NOT truncate when writing in the middle of a file */
}
#endif
}
-
+out:
RETURN(err);
} /* ll_commit_write */