Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761503AbZFMOEg (ORCPT ); Sat, 13 Jun 2009 10:04:36 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753621AbZFMOE3 (ORCPT ); Sat, 13 Jun 2009 10:04:29 -0400 Received: from pfepb.post.tele.dk ([195.41.46.236]:53219 "EHLO pfepb.post.tele.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752652AbZFMOE2 (ORCPT ); Sat, 13 Jun 2009 10:04:28 -0400 Date: Sat, 13 Jun 2009 16:06:47 +0200 From: Sam Ravnborg To: Marco Cc: Linux FS Devel , Linux Embedded , Linux Kernel , Daniel Walker Subject: Re: [PATCH 14/14] Pramfs: XIP operations Message-ID: <20090613140647.GD30053@uranus.ravnborg.org> References: <4A33A841.6080902@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A33A841.6080902@gmail.com> User-Agent: Mutt/1.4.2.1i Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1942 Lines: 76 On Sat, Jun 13, 2009 at 03:23:13PM +0200, Marco wrote: > From: Marco Stornelli > > XIP operations. > > Signed-off-by: Marco Stornelli > --- > > diff -uprN linux-2.6.30-orig/fs/pramfs/xip.c linux-2.6.30/fs/pramfs/xip.c > --- linux-2.6.30-orig/fs/pramfs/xip.c 1970-01-01 01:00:00.000000000 +0100 > +++ linux-2.6.30/fs/pramfs/xip.c 2009-06-13 12:54:26.000000000 +0200 > @@ -0,0 +1,90 @@ > +/* > + * FILE NAME fs/pramfs/xip.c > + * > + * BRIEF DESCRIPTION > + * > + * XIP operations. > + * > + * Copyright 2009 Marco Stornelli > + * This file is licensed under the terms of the GNU General Public > + * License version 2. This program is licensed "as is" without any > + * warranty of any kind, whether express or implied. > + */ > + > +#include > +#include > +#include > +#include > +#include "pram_fs.h" > +#include "xip.h" > + > +static int pram_find_and_alloc_blocks(struct inode *inode, sector_t iblock, > + sector_t *data_block, int create) > +{ > + int err = -EIO; > + off_t block; > + > + lock_kernel(); Can we find other solutions than taking the BKL? We are trying to get rid of it. > + > + block = pram_find_data_block(inode, iblock); > + > + if (!block) { > + if (!create) { > + err = -ENODATA; > + goto err; > + } > + > + err = pram_alloc_blocks(inode, iblock, 1); > + if (err) > + goto err; > + > + block = pram_find_data_block(inode, iblock); > + if (!block) { > + err = -ENODATA; > + goto err; > + } > + } > + > + *data_block = block; > + err = 0; > + > + err: > + unlock_kernel(); > + return err; > +} > + -- 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/