From 8332aef1522e5ed9db3cd77efb6d1c3bcf8548fd Mon Sep 17 00:00:00 2001 From: mav Date: Mon, 5 Oct 2015 11:51:13 +0000 Subject: [PATCH] MFC r288486, r288488: Set default block size for CD to expected 2048 bytes. git-svn-id: svn://svn.freebsd.org/base/stable/10@288823 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- usr.sbin/ctld/ctl.conf.5 | 2 +- usr.sbin/ctld/ctld.c | 5 ++++- usr.sbin/ctld/ctld.h | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/usr.sbin/ctld/ctl.conf.5 b/usr.sbin/ctld/ctl.conf.5 index ce8df67ab..2fcc90834 100644 --- a/usr.sbin/ctld/ctl.conf.5 +++ b/usr.sbin/ctld/ctl.conf.5 @@ -364,7 +364,7 @@ testing. The default backend is block. .It Ic blocksize Ar size The blocksize visible to the initiator. -The default blocksize is 512. +The default blocksize is 512 for disks, and 2048 for CD/DVDs. .It Ic ctl-lun Ar lun_id Global numeric identifier to use for a given LUN inside CTL. By default CTL allocates those IDs dynamically, but explicit specification diff --git a/usr.sbin/ctld/ctld.c b/usr.sbin/ctld/ctld.c index 741a71365..90c7db899 100644 --- a/usr.sbin/ctld/ctld.c +++ b/usr.sbin/ctld/ctld.c @@ -1644,7 +1644,10 @@ conf_verify_lun(struct lun *lun) } } if (lun->l_blocksize == 0) { - lun_set_blocksize(lun, DEFAULT_BLOCKSIZE); + if (lun->l_device_type == 5) + lun_set_blocksize(lun, DEFAULT_CD_BLOCKSIZE); + else + lun_set_blocksize(lun, DEFAULT_BLOCKSIZE); } else if (lun->l_blocksize < 0) { log_warnx("invalid blocksize for lun \"%s\"; " "must be larger than 0", lun->l_name); diff --git a/usr.sbin/ctld/ctld.h b/usr.sbin/ctld/ctld.h index 3e26237a5..ef85e4356 100644 --- a/usr.sbin/ctld/ctld.h +++ b/usr.sbin/ctld/ctld.h @@ -43,6 +43,7 @@ #define DEFAULT_CONFIG_PATH "/etc/ctl.conf" #define DEFAULT_PIDFILE "/var/run/ctld.pid" #define DEFAULT_BLOCKSIZE 512 +#define DEFAULT_CD_BLOCKSIZE 2048 #define MAX_LUNS 1024 #define MAX_NAME_LEN 223 -- 2.45.0