POISON_PAGE(iobuf->maplist[i], 0x0d);
}
-
oa = obdo_alloc();
if (oa == NULL) {
ptlrpc_set_destroy(set);
lprocfs_counter_add(ll_i2sbi(inode)->ll_stats,
LPROC_LL_DIRECT_READ, iobuf->length);
rc = obd_brw_async(rw == WRITE ? OBD_BRW_WRITE : OBD_BRW_READ,
- ll_i2obdexp(inode), oa, lsm, iobuf->nr_pages, pga,
+ ll_i2dtexp(inode), oa, lsm, iobuf->nr_pages, pga,
set, NULL);
if (rc) {
CDEBUG(rc == -ENOSPC ? D_INODE : D_ERROR,
CERROR("error from callback: rc = %d\n", rc);
}
ptlrpc_set_destroy(set);
- if (rc == 0 && rw == WRITE) {
- void lov_increase_kms(struct obd_export *,
- struct lov_stripe_md *, obd_off size);
- obd_off size = offset + length;
- lov_increase_kms(ll_i2obdexp(inode), lsm, size);
- if (size > inode->i_size)
- inode->i_size = size;
- }
if (rc == 0) {
rc = iobuf->length;
- obdo_to_inode(inode, oa, OBD_MD_FLBLOCKS);
+ if (rw == WRITE)
+ obd_adjust_kms(ll_i2dtexp(inode), lsm, offset, 0);
}
obdo_free(oa);
EXIT;
return rc;
}
+#ifdef KERNEL_HAS_AS_MAX_READAHEAD
+static int ll_max_readahead(struct inode *inode)
+{
+ return 0;
+}
+#endif
+
struct address_space_operations ll_aops = {
.readpage = ll_readpage,
.direct_IO = ll_direct_IO_24,
.commit_write = ll_commit_write,
.removepage = ll_removepage,
.sync_page = NULL,
- .bmap = NULL
+ .bmap = NULL,
+#ifdef KERNEL_HAS_AS_MAX_READAHEAD
+ .max_readahead = ll_max_readahead,
+#endif
};