Messages in this thread | | | Date | Wed, 2 May 2007 01:07:48 +0530 | From | "Satyam Sharma" <> | Subject | Re: [PATCH 16/21] sysfs: implement bin_buffer |
| |
(We went off-list just now. Adding lkml again.)
On 5/1/07, Tejun Heo <htejun@gmail.com> wrote: > Satyam Sharma wrote: > > On 4/28/07, Tejun Heo <htejun@gmail.com> wrote: > >> Implement bin_buffer which contains a mutex and pointer to PAGE_SIZE > >> buffer to properly synchronize accesses to per-openfile buffer and > >> prepare for immediate-kobj-disconnect. > >> > >> Signed-off-by: Tejun Heo <htejun@gmail.com> > >> --- > >> [...] > >> @@ -135,14 +160,22 @@ static int open(struct inode * inode, struct > >> file * file) > >> goto Error; > >> > >> error = -ENOMEM; > >> - file->private_data = kmalloc(PAGE_SIZE, GFP_KERNEL); > >> - if (!file->private_data) > >> + bb = kzalloc(sizeof(*bb), GFP_KERNEL); > >> + if (!bb) > >> goto Error; > >> > >> + bb->buffer = kmalloc(PAGE_SIZE, GFP_KERNEL); > > > > You could simply do a __get_free_page() here instead of a > > kmalloc(PAGE_SIZE). > > Yes, I could but 1. the original code was done using kmalloc
Yes, I saw that, but you could change it just as well. In any case, this will only make fs/sysfs/bin.c similar to what is being done in fs/sysfs/file.c. We allocate the buffer page backing the attribute's data in fill_read_buffer() and fill_write_buffer() using get_zeroed_page() and not kzalloc().
> 2. I'm not sure __get_free_page() is better than kmalloc(PAGE_SIZE, ), is it?
If you know for sure that you require *exactly* PAGE_SIZE bytes, then yes, it is. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |