On Wed, Mar 08, 2006 at 10:28:41AM -0800, Chen, Kenneth W wrote:
> Zhang, Yanmin wrote on Tuesday, March 07, 2006 7:25 PM
> > Currently, ftruncate on hugetlb files couldn't extend them. My patch enables it.
> >
> > This patch is against 2.6.16-rc5-mm3 and on the top of the patch which
> > implements mmap on zero-length hugetlb files with PROT_NONE.
>
> > -
> > - inode->i_size = offset;
> > - spin_lock(&mapping->i_mmap_lock);
> > - if (!prio_tree_empty(&mapping->i_mmap))
> > - hugetlb_vmtruncate_list(&mapping->i_mmap, pgoff);
> > - spin_unlock(&mapping->i_mmap_lock);
> > - truncate_hugepages(inode, offset);
> > + if (offset > inode->i_size) {
> > + if (hugetlb_extend_reservation(HUGETLBFS_I(inode), pgoff) != 0)
> > + return -ENOMEM;
> > + inode->i_size = offset;
> > + }
> > + else {
> > +
> > + inode->i_size = offset;
> > + spin_lock(&mapping->i_mmap_lock);
> > + if (!prio_tree_empty(&mapping->i_mmap))
> > + hugetlb_vmtruncate_list(&mapping->i_mmap, pgoff);
> > + spin_unlock(&mapping->i_mmap_lock);
> > + truncate_hugepages(inode, offset);
> > + }
> > return 0;
> > }
>
> Hmm?? I don't think you need to extend the reservation when extending
> hugetlb file via ftruncate. You don't have any vma that pass beyond
> current size. So making a reservation is a wrong thing to do here.
Fwiw, I think truncate *should* extend the reservation. We have a
separate thread arguing about whether we should be reserving by inode
length, as I've implemented, or by which ranges are actually mapped
(as apw's old path implemented). As long as it *is* by inode length -
so it's conceptually all about the logical file in hugetlbfs, not
about any of its mappings - I think it makes sense for an extending
truncate() to extend the reservation. It's not reserving them for any
particular mapping, it's reserving them for page cache pages.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]