if (plen > len)
plen = len;
- lnb->offset = offset;
- /* lnb->lnb_page_offset = poff; */
+ lnb->lnb_file_offset = offset;
+ lnb->lnb_page_offset = poff;
lnb->len = plen;
/* lb->flags = rnb->flags; */
lnb->flags = 0;
* needs to keep the pages all aligned properly. */
lnb->dentry = (void *) obj;
- lnb->page = osd_get_page(d, lnb->offset, rw);
+ lnb->page = osd_get_page(d, lnb->lnb_file_offset, rw);
if (lnb->page == NULL)
GOTO(cleanup, rc = -ENOMEM);
long off;
char *p = kmap(lnb[i].page);
- off = lnb[i].offset;
- if (off)
- memset(p, 0, off);
- off = lnb[i].offset + lnb[i].len;
- off &= ~CFS_PAGE_MASK;
+ off = lnb[i].lnb_page_offset;
+ if (off)
+ memset(p, 0, off);
+ off = (lnb[i].lnb_page_offset + lnb[i].len) &
+ ~CFS_PAGE_MASK;
if (off)
memset(p + off, 0, CFS_PAGE_SIZE - off);
kunmap(lnb[i].page);
/* calculate number of extents (probably better to pass nb) */
for (i = 0; i < npages; i++) {
- if (i && lnb[i].offset !=
- lnb[i - 1].offset + lnb[i - 1].len)
+ if (i && lnb[i].lnb_file_offset !=
+ lnb[i - 1].lnb_file_offset + lnb[i - 1].len)
extents++;
- if (!osd_is_mapped(inode, lnb[i].offset))
+ if (!osd_is_mapped(inode, lnb[i].lnb_file_offset))
quota_space += CFS_PAGE_SIZE;
/* ignore quota for the whole request if any page is from
for (i = 0; i < npages; i++) {
if (lnb[i].rc == -ENOSPC &&
- osd_is_mapped(inode, lnb[i].offset)) {
+ osd_is_mapped(inode, lnb[i].lnb_file_offset)) {
/* Allow the write to proceed if overwriting an
* existing block */
lnb[i].rc = 0;
LASSERT(PageLocked(lnb[i].page));
LASSERT(!PageWriteback(lnb[i].page));
- if (lnb[i].offset + lnb[i].len > isize)
- isize = lnb[i].offset + lnb[i].len;
+ if (lnb[i].lnb_file_offset + lnb[i].len > isize)
+ isize = lnb[i].lnb_file_offset + lnb[i].len;
/*
* Since write and truncate are serialized by oo_sem, even
cfs_gettimeofday(&start);
for (i = 0; i < npages; i++) {
- if (i_size_read(inode) <= lnb[i].offset)
+ if (i_size_read(inode) <= lnb[i].lnb_file_offset)
/* If there's no more data, abort early.
* lnb->rc == 0, so it's easy to detect later. */
break;
if (i_size_read(inode) <
- lnb[i].offset + lnb[i].len - 1)
- lnb[i].rc = i_size_read(inode) - lnb[i].offset;
+ lnb[i].lnb_file_offset + lnb[i].len - 1)
+ lnb[i].rc = i_size_read(inode) - lnb[i].lnb_file_offset;
else
lnb[i].rc = lnb[i].len;
m += lnb[i].len;
struct inode *inode = osd_dt_obj(dt)->oo_inode;
struct osd_thandle *oh;
ssize_t result;
-#ifdef HAVE_QUOTA_SUPPORT
- cfs_cap_t save = cfs_curproc_cap_pack();
-#endif
int is_link;
LASSERT(dt_object_exists(dt));
return -EACCES;
LASSERT(handle != NULL);
+ LASSERT(inode != NULL);
+ ll_vfs_dq_init(inode);
/* XXX: don't check: one declared chunk can be used many times */
/* OSD_EXEC_OP(handle, write); */
oh = container_of(handle, struct osd_thandle, ot_super);
LASSERT(oh->ot_handle->h_transaction != NULL);
-#ifdef HAVE_QUOTA_SUPPORT
- if (ignore_quota)
- cfs_cap_raise(CFS_CAP_SYS_RESOURCE);
- else
- cfs_cap_lower(CFS_CAP_SYS_RESOURCE);
-#endif
/* Write small symlink to inode body as we need to maintain correct
* on-disk symlinks for ldiskfs.
* Note: the buf->lb_buf contains a NUL terminator while buf->lb_len
result = osd_ldiskfs_write_record(inode, buf->lb_buf,
buf->lb_len, is_link, pos,
oh->ot_handle);
-#ifdef HAVE_QUOTA_SUPPORT
- cfs_curproc_cap_unpack(save);
-#endif
if (result == 0)
result = buf->lb_len;
return result;
LASSERT(end == OBD_OBJECT_EOF);
LASSERT(dt_object_exists(dt));
LASSERT(osd_invariant(obj));
+ LASSERT(inode != NULL);
+ ll_vfs_dq_init(inode);
LASSERT(th);
oh = container_of(th, struct osd_thandle, ot_super);