From: Yanling Song <songyl@ramaxel.com>
To: <yanling.song@linux.dev>
Cc: Bart Van Assche <bvanassche@acm.org>,
<martin.petersen@oracle.com>, <linux-scsi@vger.kernel.org>,
<yujiang@ramaxel.com>, <xuyun@ramaxel.com>, <yanggan@ramaxel.com>
Subject: Re: [PATCH V2] scsi:spraid: initial commit of Ramaxel spraid driver
Date: Mon, 27 Dec 2021 15:55:35 +0800 [thread overview]
Message-ID: <20211227155535.0000119a@ramaxel.com> (raw)
In-Reply-To: <52b05051cf00a9ad617c31f227654dcc@linux.dev>
On Sun, 12 Dec 2021 02:56:01 +0000
yanling.song@linux.dev wrote:
> December 10, 2021 7:15 AM, "Bart Van Assche" <bvanassche@acm.org>
> wrote:
>
> > On 11/25/21 11:33 PM, Yanling Song wrote:
> >
> >> +struct spraid_dev {
> >> + struct pci_dev *pdev;
> >
> > Why a pointer to struct pci_dev instead of embedding struct pci_dev
> > in this structure? The latter approach is more efficient.
> >
> The pointer of pci_dev is from linux driver frame work probe()
> function, spraid driver does not allocate memory for it, just save
> the pointer.
>
> >> + struct device *dev;
> >
> > What does this pointer represent? There is already a struct device
> > inside struct pci_dev. Can this member be left out?
> >
> The pointer of dev is from struct pci_dev. It is saved in struct
> spraid_dev just for convenience: so that we do not need to get the
> dev from pci_dev every time when using dev.
>
> >> + struct spraid_cmd *adm_cmds;
> >> + struct list_head adm_cmd_list;
> >> + spinlock_t adm_cmd_lock; /* spinlock for lock handling */
> >> +
> >> + struct spraid_cmd *ioq_ptcmds;
> >> + struct list_head ioq_pt_list;
> >> + spinlock_t ioq_pt_lock; /* spinlock for lock handling */
> >> +
> >> + struct work_struct scan_work;
> >> + struct work_struct timesyn_work;
> >> + struct work_struct reset_work;
> >> +
> >> + enum spraid_state state;
> >> + spinlock_t state_lock; /* spinlock for lock handling */
> >> + struct request_queue *bsg_queue;
> >
> > The "spinlock for lock handling" comments are not useful. Please
> > make these comments useful or remove these.
> >
> Comments will be removed in the next version.
>
> >> +#include <linux/version.h>
> >
> > Upstream drivers should not include this header file.
> >
> Ok. Changes will be included in the next version.
>
> >> +static u32 admin_tmout = 60;
> >> +module_param(admin_tmout, uint, 0644);
> >> +MODULE_PARM_DESC(admin_tmout, "admin commands timeout (seconds)");
> >> +
> Will be changed to per SCSI host.
>
> >> +static u32 scmd_tmout_pt = 30;
> >> +module_param(scmd_tmout_pt, uint, 0644);
> >> +MODULE_PARM_DESC(scmd_tmout_pt, "scsi commands timeout for
> >> passthrough(seconds)");
> >> +
> Will be deleted.
>
> >> +static u32 scmd_tmout_nonpt = 180;
> >> +module_param(scmd_tmout_nonpt, uint, 0644);
> >> +MODULE_PARM_DESC(scmd_tmout_nonpt, "scsi commands timeout for
> >> rawdisk&raid(seconds)");
> >> +
> Will be splitted into two attributes of scsi host:scmd_tmout_rawdisk,
> scmd_tmout_vd
>
After the internal discussion, the two parameters will be removed for
now.
> >> +static u32 wait_abl_tmout = 3;
> >> +module_param(wait_abl_tmout, uint, 0644);
> >> +MODULE_PARM_DESC(wait_abl_tmout, "wait abnormal io
> >> timeout(seconds)");
> >> +
> Will be deleted.
>
> >> +static bool use_sgl_force;
> >> +module_param(use_sgl_force, bool, 0644);
> >> +MODULE_PARM_DESC(use_sgl_force, "force IO use sgl format, default
> >> false");
> >
> Will be deleted.
>
> > Consider leaving out all kernel module parameters. Kernel module
> > parameters are easy to introduce but can't be removed. Is it really
> > necessary that the above parameters can be configured? If so, most
> > of the above parameters probably should be per SCSI host or SCSI
> > device instead of module parameters.
> Comments as the above.
>
> >> +static u32 io_queue_depth = 1024;
> >> +module_param_cb(io_queue_depth, &ioq_depth_ops, &io_queue_depth,
> >> 0644); +MODULE_PARM_DESC(io_queue_depth, "set io queue depth,
> >> should >= 2");
> >
> > How does this differ from the SCSI sysfs attribute "can_queue"?
> >
> Yes. it is the same as SCSI sysfs attribute "can_queue".
> The maximum queue depth supported by hardware is 1024.
> The parameter is to change the queue depth for different usages to
> get the best performance.
>
>
> >> +static unsigned char log_debug_switch;
> >> +module_param_cb(log_debug_switch, &log_debug_switch_ops,
> >> &log_debug_switch, 0644); +MODULE_PARM_DESC(log_debug_switch, "set
> >> log state, default non-zero for switch on");
> >
> > Can this parameter be left out by using pr_debug()?
> >
> Ye. Will use pr_debug in the next version.
>
>
> >> +static unsigned char small_pool_num = 4;
> >> +module_param_cb(small_pool_num, &small_pool_num_ops,
> >> &small_pool_num, 0644); +MODULE_PARM_DESC(small_pool_num, "set prp
> >> small pool num, default 4, MAX 16");
> >
> > The description of the above parameter is too cryptic.
> >
> Will add more comments:
> It was found that the spindlock of a single pool conflicts a lot with
> multiple CPUs. So multiple pools are introduced to reduce the
> conflictions.
>
>
> > Thanks,
> >
> > Bart.
prev parent reply other threads:[~2021-12-27 7:56 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-26 7:33 [PATCH V2] scsi:spraid: initial commit of Ramaxel spraid driver Yanling Song
2021-11-26 16:21 ` James Bottomley
2021-11-26 19:24 ` Randy Dunlap
[not found] ` <20211130113449.45751209@songyl>
2021-12-01 0:26 ` Yanling song
2021-11-29 13:04 ` Hannes Reinecke
[not found] ` <20211130113836.1bb8e91c@songyl>
2021-11-30 11:55 ` Hannes Reinecke
2021-12-02 13:56 ` Yanling song
2021-12-06 17:00 ` Bart Van Assche
2021-12-09 23:15 ` Bart Van Assche
2021-12-10 17:42 ` Bart Van Assche
2021-12-12 3:02 ` Yanling song
2021-12-10 21:40 ` Bart Van Assche
2021-12-12 3:04 ` Yanling song
2021-12-12 2:56 ` yanling.song
2021-12-27 7:55 ` Yanling Song [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211227155535.0000119a@ramaxel.com \
--to=songyl@ramaxel.com \
--cc=bvanassche@acm.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=xuyun@ramaxel.com \
--cc=yanggan@ramaxel.com \
--cc=yanling.song@linux.dev \
--cc=yujiang@ramaxel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).