From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932788AbbBZOLN (ORCPT ); Thu, 26 Feb 2015 09:11:13 -0500 Received: from mail-pa0-f42.google.com ([209.85.220.42]:45493 "EHLO mail-pa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932777AbbBZOLC (ORCPT ); Thu, 26 Feb 2015 09:11:02 -0500 From: Sergey Senozhatsky To: Andrew Morton , Minchan Kim Cc: Jerome Marchand , Nitin Gupta , Sergey Senozhatsky , linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: [PATCH 6/8] zram: allow automatic new zram device_id assignment Date: Thu, 26 Feb 2015 23:10:41 +0900 Message-Id: <1424959843-20409-7-git-send-email-sergey.senozhatsky@gmail.com> X-Mailer: git-send-email 2.3.1.167.g7f4ba4b In-Reply-To: <1424959843-20409-1-git-send-email-sergey.senozhatsky@gmail.com> References: <1424959843-20409-1-git-send-email-sergey.senozhatsky@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If no particular device_id was requested (passed -1 to zram_add()) during new zram device creation, generate one automatically and return it back. So, schematically, device creation can be done as: dev_id = ioctl ZRAM_CTL_ADD -1 # dev_id == 1 or error code init device zram1 dev_id = ioctl ZRAM_CTL_ADD -1 # dev_id == 2 or error code init device zram2 ... Signed-off-by: Sergey Senozhatsky --- drivers/block/zram/zram_drv.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 0154c2d4..5804dda 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1090,8 +1090,15 @@ static int zram_add(int device_id) if (!zram) return ret; - ret = idr_alloc(&zram_index_idr, zram, device_id, + if (device_id < 0) { + /* generate new device_id */ + ret = idr_alloc(&zram_index_idr, zram, 0, 0, GFP_KERNEL); + device_id = ret; + } else { + /* use specific device_id */ + ret = idr_alloc(&zram_index_idr, zram, device_id, device_id + 1, GFP_KERNEL); + } if (ret < 0) goto out_free_dev; -- 2.3.1.167.g7f4ba4b