Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 156655
b: refs/heads/master
c: df9eba8
h: refs/heads/master
i:
  156653: 3a02852
  156651: a13873e
  156647: 2d81b33
  156639: e9c1439
v: v3
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Aug 12, 2009
1 parent 2db2297 commit 4a9cc04
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 30 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1ae88b2e446261c038f2c0c3150ffae142b227a2
refs/heads/master: df9eba8c9febf53782ef896518e7177999d98188
17 changes: 4 additions & 13 deletions trunk/drivers/ata/pata_at91.c
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ static int __devinit pata_at91_probe(struct platform_device *pdev)
ata_port_desc(ap, "no IRQ, using PIO polling");
}

info = kzalloc(sizeof(*info), GFP_KERNEL);
info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);

if (!info) {
dev_err(dev, "failed to allocate memory for private data\n");
Expand All @@ -275,7 +275,7 @@ static int __devinit pata_at91_probe(struct platform_device *pdev)
if (!info->ide_addr) {
dev_err(dev, "failed to map IO base\n");
ret = -ENOMEM;
goto err_ide_ioremap;
goto err_put;
}

info->alt_addr = devm_ioremap(dev,
Expand All @@ -284,7 +284,7 @@ static int __devinit pata_at91_probe(struct platform_device *pdev)
if (!info->alt_addr) {
dev_err(dev, "failed to map CTL base\n");
ret = -ENOMEM;
goto err_alt_ioremap;
goto err_put;
}

ap->ioaddr.cmd_addr = info->ide_addr;
Expand All @@ -303,21 +303,15 @@ static int __devinit pata_at91_probe(struct platform_device *pdev)
irq ? ata_sff_interrupt : NULL,
irq_flags, &pata_at91_sht);

err_alt_ioremap:
devm_iounmap(dev, info->ide_addr);

err_ide_ioremap:
err_put:
clk_put(info->mck);
kfree(info);

return ret;
}

static int __devexit pata_at91_remove(struct platform_device *pdev)
{
struct ata_host *host = dev_get_drvdata(&pdev->dev);
struct at91_ide_info *info;
struct device *dev = &pdev->dev;

if (!host)
return 0;
Expand All @@ -328,11 +322,8 @@ static int __devexit pata_at91_remove(struct platform_device *pdev)
if (!info)
return 0;

devm_iounmap(dev, info->ide_addr);
devm_iounmap(dev, info->alt_addr);
clk_put(info->mck);

kfree(info);
return 0;
}

Expand Down
20 changes: 10 additions & 10 deletions trunk/fs/nfs/direct.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ static void nfs_direct_read_release(void *calldata)

if (put_dreq(dreq))
nfs_direct_complete(dreq);
nfs_readdata_free(data);
nfs_readdata_release(calldata);
}

static const struct rpc_call_ops nfs_read_direct_ops = {
Expand Down Expand Up @@ -314,14 +314,14 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_direct_req *dreq,
data->npages, 1, 0, data->pagevec, NULL);
up_read(&current->mm->mmap_sem);
if (result < 0) {
nfs_readdata_free(data);
nfs_readdata_release(data);
break;
}
if ((unsigned)result < data->npages) {
bytes = result * PAGE_SIZE;
if (bytes <= pgbase) {
nfs_direct_release_pages(data->pagevec, result);
nfs_readdata_free(data);
nfs_readdata_release(data);
break;
}
bytes -= pgbase;
Expand All @@ -334,7 +334,7 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_direct_req *dreq,
data->inode = inode;
data->cred = msg.rpc_cred;
data->args.fh = NFS_FH(inode);
data->args.context = ctx;
data->args.context = get_nfs_open_context(ctx);
data->args.offset = pos;
data->args.pgbase = pgbase;
data->args.pages = data->pagevec;
Expand Down Expand Up @@ -441,7 +441,7 @@ static void nfs_direct_free_writedata(struct nfs_direct_req *dreq)
struct nfs_write_data *data = list_entry(dreq->rewrite_list.next, struct nfs_write_data, pages);
list_del(&data->pages);
nfs_direct_release_pages(data->pagevec, data->npages);
nfs_writedata_free(data);
nfs_writedata_release(data);
}
}

Expand Down Expand Up @@ -534,7 +534,7 @@ static void nfs_direct_commit_release(void *calldata)

dprintk("NFS: %5u commit returned %d\n", data->task.tk_pid, status);
nfs_direct_write_complete(dreq, data->inode);
nfs_commit_free(data);
nfs_commitdata_release(calldata);
}

static const struct rpc_call_ops nfs_commit_direct_ops = {
Expand Down Expand Up @@ -570,7 +570,7 @@ static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq)
data->args.fh = NFS_FH(data->inode);
data->args.offset = 0;
data->args.count = 0;
data->args.context = dreq->ctx;
data->args.context = get_nfs_open_context(dreq->ctx);
data->res.count = 0;
data->res.fattr = &data->fattr;
data->res.verf = &data->verf;
Expand Down Expand Up @@ -734,14 +734,14 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_direct_req *dreq,
data->npages, 0, 0, data->pagevec, NULL);
up_read(&current->mm->mmap_sem);
if (result < 0) {
nfs_writedata_free(data);
nfs_writedata_release(data);
break;
}
if ((unsigned)result < data->npages) {
bytes = result * PAGE_SIZE;
if (bytes <= pgbase) {
nfs_direct_release_pages(data->pagevec, result);
nfs_writedata_free(data);
nfs_writedata_release(data);
break;
}
bytes -= pgbase;
Expand All @@ -756,7 +756,7 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_direct_req *dreq,
data->inode = inode;
data->cred = msg.rpc_cred;
data->args.fh = NFS_FH(inode);
data->args.context = ctx;
data->args.context = get_nfs_open_context(ctx);
data->args.offset = pos;
data->args.pgbase = pgbase;
data->args.pages = data->pagevec;
Expand Down
6 changes: 4 additions & 2 deletions trunk/fs/nfs/read.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,17 @@ struct nfs_read_data *nfs_readdata_alloc(unsigned int pagecount)
return p;
}

void nfs_readdata_free(struct nfs_read_data *p)
static void nfs_readdata_free(struct nfs_read_data *p)
{
if (p && (p->pagevec != &p->page_array[0]))
kfree(p->pagevec);
mempool_free(p, nfs_rdata_mempool);
}

static void nfs_readdata_release(struct nfs_read_data *rdata)
void nfs_readdata_release(void *data)
{
struct nfs_read_data *rdata = data;

put_nfs_open_context(rdata->args.context);
nfs_readdata_free(rdata);
}
Expand Down
6 changes: 4 additions & 2 deletions trunk/fs/nfs/write.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,17 @@ struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount)
return p;
}

void nfs_writedata_free(struct nfs_write_data *p)
static void nfs_writedata_free(struct nfs_write_data *p)
{
if (p && (p->pagevec != &p->page_array[0]))
kfree(p->pagevec);
mempool_free(p, nfs_wdata_mempool);
}

static void nfs_writedata_release(struct nfs_write_data *wdata)
void nfs_writedata_release(void *data)
{
struct nfs_write_data *wdata = data;

put_nfs_open_context(wdata->args.context);
nfs_writedata_free(wdata);
}
Expand Down
5 changes: 3 additions & 2 deletions trunk/include/linux/nfs_fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,7 @@ extern int nfs_writepages(struct address_space *, struct writeback_control *);
extern int nfs_flush_incompatible(struct file *file, struct page *page);
extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int);
extern int nfs_writeback_done(struct rpc_task *, struct nfs_write_data *);
extern void nfs_writedata_release(void *);

/*
* Try to write back everything synchronously (but check the
Expand All @@ -487,6 +488,7 @@ extern int nfs_wb_page_cancel(struct inode *inode, struct page* page);
extern int nfs_commit_inode(struct inode *, int);
extern struct nfs_write_data *nfs_commitdata_alloc(void);
extern void nfs_commit_free(struct nfs_write_data *wdata);
extern void nfs_commitdata_release(void *wdata);
#else
static inline int
nfs_commit_inode(struct inode *inode, int how)
Expand All @@ -505,7 +507,6 @@ nfs_have_writebacks(struct inode *inode)
* Allocate nfs_write_data structures
*/
extern struct nfs_write_data *nfs_writedata_alloc(unsigned int npages);
extern void nfs_writedata_free(struct nfs_write_data *);

/*
* linux/fs/nfs/read.c
Expand All @@ -514,14 +515,14 @@ extern int nfs_readpage(struct file *, struct page *);
extern int nfs_readpages(struct file *, struct address_space *,
struct list_head *, unsigned);
extern int nfs_readpage_result(struct rpc_task *, struct nfs_read_data *);
extern void nfs_readdata_release(void *data);
extern int nfs_readpage_async(struct nfs_open_context *, struct inode *,
struct page *);

/*
* Allocate nfs_read_data structures
*/
extern struct nfs_read_data *nfs_readdata_alloc(unsigned int npages);
extern void nfs_readdata_free(struct nfs_read_data *);

/*
* linux/fs/nfs3proc.c
Expand Down

0 comments on commit 4a9cc04

Please sign in to comment.