[PATCH 2 1/2] dax: change bdev_dax_supported() to take a block_device as input
by Dave Jiang
This is in preparation to support DAX for realtime device on XFS.
bdev_dax_supported() will be taking a block_device as input instead of
a superblock. The only place a super_block is used in this function is
providing the id for debug outputs. Also __bdev_dax_supported()
will be removed since it just directly calls bdev_dax_supported()
and is not reference by any other code.
Signed-off-by: Dave Jiang <dave.jiang(a)intel.com>
---
drivers/dax/super.c | 33 ++++++++++++++++-----------------
fs/ext2/super.c | 2 +-
fs/ext4/super.c | 2 +-
fs/xfs/xfs_ioctl.c | 2 +-
fs/xfs/xfs_super.c | 2 +-
include/linux/dax.h | 8 ++------
6 files changed, 22 insertions(+), 27 deletions(-)
diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index 473af694ad1c..3bdf6787b6df 100644
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -70,11 +70,10 @@ struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev)
return fs_dax_get_by_host(bdev->bd_disk->disk_name);
}
EXPORT_SYMBOL_GPL(fs_dax_get_by_bdev);
-#endif
/**
- * __bdev_dax_supported() - Check if the device supports dax for filesystem
- * @sb: The superblock of the device
+ * bdev_dax_supported() - Check if the device supports dax for filesystem
+ * @sb: The block_device of the device
* @blocksize: The block size of the device
*
* This is a library function for filesystems to check if the block device
@@ -82,9 +81,8 @@ EXPORT_SYMBOL_GPL(fs_dax_get_by_bdev);
*
* Return: negative errno if unsupported, 0 if supported.
*/
-int __bdev_dax_supported(struct super_block *sb, int blocksize)
+int bdev_dax_supported(struct block_device *bdev, int blocksize)
{
- struct block_device *bdev = sb->s_bdev;
struct dax_device *dax_dev;
pgoff_t pgoff;
int err, id;
@@ -93,22 +91,22 @@ int __bdev_dax_supported(struct super_block *sb, int blocksize)
long len;
if (blocksize != PAGE_SIZE) {
- pr_debug("VFS (%s): error: unsupported blocksize for dax\n",
- sb->s_id);
+ pr_debug("bdev (%d:%d): error: unsupported blocksize for dax\n",
+ MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev));
return -EINVAL;
}
err = bdev_dax_pgoff(bdev, 0, PAGE_SIZE, &pgoff);
if (err) {
- pr_debug("VFS (%s): error: unaligned partition for dax\n",
- sb->s_id);
+ pr_debug("bdev (%d:%d): error: unaligned partition for dax\n",
+ MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev));
return err;
}
dax_dev = dax_get_by_host(bdev->bd_disk->disk_name);
if (!dax_dev) {
- pr_debug("VFS (%s): error: device does not support dax\n",
- sb->s_id);
+ pr_debug("bdev (%d:%d): error: device does not support dax\n",
+ MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev));
return -EOPNOTSUPP;
}
@@ -119,8 +117,8 @@ int __bdev_dax_supported(struct super_block *sb, int blocksize)
put_dax(dax_dev);
if (len < 1) {
- pr_debug("VFS (%s): error: dax access failed (%ld)\n",
- sb->s_id, len);
+ pr_debug("bdev (%d:%d): error: dax access failed (%ld)\n",
+ MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev), len);
return len < 0 ? len : -EIO;
}
@@ -128,15 +126,16 @@ int __bdev_dax_supported(struct super_block *sb, int blocksize)
|| pfn_t_devmap(pfn))
/* pass */;
else {
- pr_debug("VFS (%s): error: dax support not enabled\n",
- sb->s_id);
+ pr_debug("bdev (%d:%d): error: dax support not enabled\n",
+ MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev));
return -EOPNOTSUPP;
}
return 0;
}
-EXPORT_SYMBOL_GPL(__bdev_dax_supported);
-#endif
+EXPORT_SYMBOL_GPL(bdev_dax_supported);
+#endif /* CONFIG_FS_DAX */
+#endif /* CONFIG_BLOCK */
enum dax_device_flags {
/* !alive + rcu grace period == no new operations / mappings */
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 38f9222606ee..a0de090b18d5 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -958,7 +958,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
blocksize = BLOCK_SIZE << le32_to_cpu(sbi->s_es->s_log_block_size);
if (sbi->s_mount_opt & EXT2_MOUNT_DAX) {
- err = bdev_dax_supported(sb, blocksize);
+ err = bdev_dax_supported(sb->s_bdev, blocksize);
if (err) {
ext2_msg(sb, KERN_ERR,
"DAX unsupported by block device. Turning off DAX.");
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 18873ea89e08..7ebc8d5cab8c 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3712,7 +3712,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
" that may contain inline data");
sbi->s_mount_opt &= ~EXT4_MOUNT_DAX;
}
- err = bdev_dax_supported(sb, blocksize);
+ err = bdev_dax_supported(sb->s_bdev, blocksize);
if (err) {
ext4_msg(sb, KERN_ERR,
"DAX unsupported by block device. Turning off DAX.");
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index 20dc65fef6a4..5fd4d50eb1c6 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -1102,7 +1102,7 @@ xfs_ioctl_setattr_dax_invalidate(
if (fa->fsx_xflags & FS_XFLAG_DAX) {
if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))
return -EINVAL;
- if (bdev_dax_supported(sb, sb->s_blocksize) < 0)
+ if (bdev_dax_supported(sb->s_bdev, sb->s_blocksize) < 0)
return -EINVAL;
}
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 1dacccc367f8..e8a687232614 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1652,7 +1652,7 @@ xfs_fs_fill_super(
xfs_warn(mp,
"DAX enabled. Warning: EXPERIMENTAL, use at your own risk");
- error = bdev_dax_supported(sb, sb->s_blocksize);
+ error = bdev_dax_supported(sb->s_bdev, sb->s_blocksize);
if (error) {
xfs_alert(mp,
"DAX unsupported by block device. Turning off DAX.");
diff --git a/include/linux/dax.h b/include/linux/dax.h
index 5258346c558c..a31a7e3f929b 100644
--- a/include/linux/dax.h
+++ b/include/linux/dax.h
@@ -40,11 +40,7 @@ static inline void put_dax(struct dax_device *dax_dev)
int bdev_dax_pgoff(struct block_device *, sector_t, size_t, pgoff_t *pgoff);
#if IS_ENABLED(CONFIG_FS_DAX)
-int __bdev_dax_supported(struct super_block *sb, int blocksize);
-static inline int bdev_dax_supported(struct super_block *sb, int blocksize)
-{
- return __bdev_dax_supported(sb, blocksize);
-}
+int bdev_dax_supported(struct block_device *bdev, int blocksize);
static inline struct dax_device *fs_dax_get_by_host(const char *host)
{
@@ -58,7 +54,7 @@ static inline void fs_put_dax(struct dax_device *dax_dev)
struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev);
#else
-static inline int bdev_dax_supported(struct super_block *sb, int blocksize)
+static inline int bdev_dax_supported(struct block_device *bdev, int blocksize)
{
return -EOPNOTSUPP;
}
2 years, 10 months
[PATCH 1/2] ndctl: add check for update firmware supported
by Dave Jiang
Adding generic and intel support function to allow check if update firmware
is supported by the kernel.
Signed-off-by: Dave Jiang <dave.jiang(a)intel.com>
---
ndctl/lib/firmware.c | 11 +++++++++++
ndctl/lib/intel.c | 24 ++++++++++++++++++++++++
ndctl/lib/libndctl.sym | 1 +
ndctl/lib/private.h | 1 +
ndctl/libndctl.h | 1 +
ndctl/update.c | 4 ++++
6 files changed, 42 insertions(+)
diff --git a/ndctl/lib/firmware.c b/ndctl/lib/firmware.c
index f6deec5d..78d753ca 100644
--- a/ndctl/lib/firmware.c
+++ b/ndctl/lib/firmware.c
@@ -107,3 +107,14 @@ ndctl_cmd_fw_xlat_firmware_status(struct ndctl_cmd *cmd)
else
return FW_EUNKNOWN;
}
+
+NDCTL_EXPORT bool
+ndctl_dimm_fw_update_supported(struct ndctl_dimm *dimm)
+{
+ struct ndctl_dimm_ops *ops = dimm->ops;
+
+ if (ops && ops->fw_update_supported)
+ return ops->fw_update_supported(dimm);
+ else
+ return false;
+}
diff --git a/ndctl/lib/intel.c b/ndctl/lib/intel.c
index cee5204c..7d976c50 100644
--- a/ndctl/lib/intel.c
+++ b/ndctl/lib/intel.c
@@ -650,6 +650,29 @@ intel_dimm_cmd_new_lss(struct ndctl_dimm *dimm)
return cmd;
}
+static bool intel_dimm_fw_update_supported(struct ndctl_dimm *dimm)
+{
+ struct ndctl_ctx *ctx = ndctl_dimm_get_ctx(dimm);
+
+ if (!ndctl_dimm_is_cmd_supported(dimm, ND_CMD_CALL)) {
+ dbg(ctx, "unsupported cmd: %d\n", ND_CMD_CALL);
+ return false;
+ }
+
+ /*
+ * We only need to check FW_GET_INFO. If that isn't supported then
+ * the others aren't either.
+ */
+ if (test_dimm_dsm(dimm, ND_INTEL_FW_GET_INFO)
+ == DIMM_DSM_UNSUPPORTED) {
+ dbg(ctx, "unsupported function: %d\n",
+ ND_INTEL_FW_GET_INFO);
+ return false;
+ }
+
+ return true;
+}
+
struct ndctl_dimm_ops * const intel_dimm_ops = &(struct ndctl_dimm_ops) {
.cmd_desc = intel_cmd_desc,
.new_smart = intel_dimm_cmd_new_smart,
@@ -703,4 +726,5 @@ struct ndctl_dimm_ops * const intel_dimm_ops = &(struct ndctl_dimm_ops) {
.fw_fquery_get_fw_rev = intel_cmd_fw_fquery_get_fw_rev,
.fw_xlat_firmware_status = intel_cmd_fw_xlat_firmware_status,
.new_ack_shutdown_count = intel_dimm_cmd_new_lss,
+ .fw_update_supported = intel_dimm_fw_update_supported,
};
diff --git a/ndctl/lib/libndctl.sym b/ndctl/lib/libndctl.sym
index af9b7d54..cc580f9c 100644
--- a/ndctl/lib/libndctl.sym
+++ b/ndctl/lib/libndctl.sym
@@ -344,4 +344,5 @@ global:
ndctl_cmd_fw_fquery_get_fw_rev;
ndctl_cmd_fw_xlat_firmware_status;
ndctl_dimm_cmd_new_ack_shutdown_count;
+ ndctl_dimm_fw_update_supported;
} LIBNDCTL_13;
diff --git a/ndctl/lib/private.h b/ndctl/lib/private.h
index 015eeb2d..ae4454cf 100644
--- a/ndctl/lib/private.h
+++ b/ndctl/lib/private.h
@@ -325,6 +325,7 @@ struct ndctl_dimm_ops {
unsigned long long (*fw_fquery_get_fw_rev)(struct ndctl_cmd *);
enum ND_FW_STATUS (*fw_xlat_firmware_status)(struct ndctl_cmd *);
struct ndctl_cmd *(*new_ack_shutdown_count)(struct ndctl_dimm *);
+ bool (*fw_update_supported)(struct ndctl_dimm *);
};
struct ndctl_dimm_ops * const intel_dimm_ops;
diff --git a/ndctl/libndctl.h b/ndctl/libndctl.h
index 9db775ba..08030d35 100644
--- a/ndctl/libndctl.h
+++ b/ndctl/libndctl.h
@@ -625,6 +625,7 @@ unsigned int ndctl_cmd_fw_start_get_context(struct ndctl_cmd *cmd);
unsigned long long ndctl_cmd_fw_fquery_get_fw_rev(struct ndctl_cmd *cmd);
enum ND_FW_STATUS ndctl_cmd_fw_xlat_firmware_status(struct ndctl_cmd *cmd);
struct ndctl_cmd *ndctl_dimm_cmd_new_ack_shutdown_count(struct ndctl_dimm *dimm);
+bool ndctl_dimm_fw_update_supported(struct ndctl_dimm *dimm);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/ndctl/update.c b/ndctl/update.c
index 0f0f0d81..72f5839b 100644
--- a/ndctl/update.c
+++ b/ndctl/update.c
@@ -454,6 +454,10 @@ static int get_ndctl_dimm(struct update_context *uctx, void *ctx)
ndctl_dimm_foreach(bus, dimm) {
if (!util_dimm_filter(dimm, uctx->dimm_id))
continue;
+ if (!ndctl_dimm_fw_update_supported(dimm)) {
+ error("DIMM firmware update not supported by the kernel.");
+ return -ENOTSUP;
+ }
uctx->dimm = dimm;
return 0;
}
2 years, 10 months
[PATCH v4 0/3] minimal DAX support for XFS realtime device
by Dave Jiang
Darrick,
After reading the comments from you, Dave Chinner, and Dan, it looks like
the dyanmic S_DAX flag support won't be coming or not any time soon at the
least. Here are the the collection of patches so far to address yours and
Dave C's comments for minimal support. Please let me know what else I am
missing. Thanks!
v3:
- Removed setting of error return in ext2 and ext4 per Ross's comments
- Rebased against 4.16-rc1 with updates
---
Darrick J. Wong (1):
fs: allow per-device dax status checking for filesystems
Dave Jiang (2):
dax: change bdev_dax_supported() to support boolean returns
xfs: reject removal of realtime flag when datadev doesn't support DAX
drivers/dax/super.c | 27 ++++++++++++++-------------
fs/ext2/super.c | 3 +--
fs/ext4/super.c | 3 +--
fs/xfs/xfs_ioctl.c | 18 +++++++++++++++++-
fs/xfs/xfs_iops.c | 30 +++++++++++++++++++++++++-----
fs/xfs/xfs_super.c | 11 +++++++++--
include/linux/dax.h | 18 +++++++++++++-----
7 files changed, 80 insertions(+), 30 deletions(-)
--
2 years, 10 months
Attn: HR Dept. (Manpower Agency Introduction - Pakistan)
by Farrukh Shaikh
Dear Sir/Madam,
Are you looking to recruit manpower from Pakistan, India, Philippines, Bangladesh, Sri Lanka, Indonesia, Nepal, Myanmar or Vietnam? If not currently, please save this email for your future reference.
We (S.A.Z UNIVERSAL LINKS LTD) are a professional HR, recruiting and manpower placement company that provides all types of manpower recruitment services and having a strong history of top line manpower solutions i.e. professional, executive level, skilled, semi-skilled and unskilled workforce from Pakistan and from other countries (through our counterpart offices & associates) to large number of reputable employers for their projects in Middle East, Far East, Europe and America. Our steadfast commitment to serve our clients with utmost efficiency and responsibility has become our hallmark. Please visit "www.sazunilinks.com/profile.pdf" for our detailed company profile with some of our work history for your kind reference.
We are a registered manpower placement company under Pakistan Overseas Employment Promoters Association (POEPA) with a well-experienced team to select perfect candidates for our esteemed clients. Our mission is to provide excellent services and solutions according to exact requirement of our valuable clients as we believe that this is a key for a long term relationship with them.
Over the years, we were able to earn the trust of many reputable companies worldwide, particularly in the Gulf region: Some of our major clients in different regions are as follows:
.---Saudi Arabia---.:
.|. Almarai Company .|. ASSAD SAID for Contracting Co .|. Jeddah Cables Company .|. Nesma & Partners .|. Freyssinet Saudi Arabia .|. Al-Rushaid group .|. Al-Faraa Group .|. Omrania & Associates .|. Al-Muhaidib Contracting Co. .|. Al-Saad General Contracting Co. .|. Abahsain Company .|. Jomail Saudi Arabia .|. Petrozone Est. .|. Electric Water .|. Heater Factory .|. Bridgeway Specialized Contracting Co. Ltd .|. Top Screens Co. .|. National scientific company .|. Achevx Advertising .|. Industrial Contractors Co. Ltd.(INCO) .|. SAED Recruitment Co. .|. Jamjoom Medical Industries .|. SAG Contracting .|. Anan Iskan Housing Solutions .|. Almaarefah school .|. Arcoma Group .|. Dakheel Company .|. Global Ports Co. .|. IHG | Holiday Inn Riyadh .|. Sisco Saudi .|. Angari Co. .|. Dejam Co. .|. STS Co. .|. Gandour, Saudi Arabia .|. Maaf Dalkia, Saudi Arabia .|. Saudi Chevron Phillips Company .|. Alkhorayef Group .|. Universal Motors Agencies (GMC) .|. Arabian Auto Agency (AAA) .|. Al-Jomaih Holding Company .|. Saeed R Al-Zahrani Corporation (SRACO) .|. Arcelor Mittal Steel Company .|. Al-Watania Industries .|. Kanoo Commercial Group .|. Batterjee Holdings .|. AnNasban Group .|. Searas International .|. Astra Foods .|. Petron Saudi Contracting Co. .|. International Paints Ltd (AKZO NOBEL) .|. Al-Faraa Group .|. AECOM Arabia Ltd. Co. .|. PVC Arabia Co. .|. Al-Rasheed Group .|. United Meem Co. .|. JENAN Properties .|. Engineering Unit Gen. Cont. .|. Masakeen Co. .|. Eastern Industrial Company .|. M.J.E Steel Co. .|. Saudi International Petrochemical Co. (Sipchem) .|. Construction & Roads Services Co. .|. Al-Beer Medical Group .|. Ali H. Al-Ghamdi & Partners Co [AG&P] .|. Zuhair Fayez Partnership Consultants .|. Gulf Quality Control Co. Ltd .|. Al-Hamrani Fuchs Petroleum Co. .|. Star Weddings Co. .|. Petromin Corporation .|. Saudi Fal Co. .|. ZMS Group .|. University of Ha'il .|. Arrow Food Distribution Company .|. Al-Nasser Group .|. SASIB Arabia .|. First Technical Contracting .|. Rayan Gulf Company .|. Saudi Cranes & Steel Works .|. Emdad Contracting Company .|-- Also serving some prestigious clients like Saudi Aramco, MARAFIQ Utility Company, SABIC (Saudi Basic Industries Corporation), Hadeed Iron & Steel Company and many more through their designated contractors in Kingdom.
.--- United Arab Emirates ---.:
.|. Gulf Piping Company .|. Jerry Varghese .|. Em Tech LLC .|. Maaf Dalikia UAE .|. Cladtech International (Unipods - Al-Rajhi Holdings) .|. Europcar UAE .|. Sawaeed Employment LLC .|. Wave Tech L.L.C .|. Tamas Projects .|. Damas Groupe .|. IFFCO Group .|. MPS Management Consultancy .|. Majestic Jetties Company .|. Global Glass Company .|. Woodworks Factory .|. International Cap Company .|. Elenco Security Systems .|. AkzoNobel Middle East .|. Petron Emirates Contracting Co. .|. Al-Bassam RAK .|. Emirate Dredging Company .|. Global Management Consultants .|-- Also a registered Pakistani Manpower Agency with Abu Dhabi Chamber of Commerce & Industry.
.--- Qatar ---.:
.|. Belfa International .|. HBK Engineering Company .|. Capital Technology Company .|. Al-Khayyat Contracting .|.
.--- Oman ---.:
.|. Rataj Factory for Kitchen & Furniture .|. Nizwa Marble Company .|. A.N Printing Press .|. Arabworld Recruitment Company .|.
.--- Bahrain ---.:
.|. Synergy MiddleEast Group .|. Burgerline Chain of Restaurants .|. Ascentech Telecom .|. Sayed Kadhem Al-Durazi & Sons .|.
.--- Libya ---.:
.|. Galaxy Catering Company .|.
.--- Yemen ---.:
.|. Yemen Plast Co .|. Al Khaled For Gen. Comm. Agencies .|. AMTC Automotive & Machinery Trading Center (Toyota) .|.
.--- Sudan ---.:
.|. Jedian Group .|. Florence Services & Ventures Inc .|. African House for Printing the Glorious Qura'n .|.
The list of our valuable and highly satisfied clients continues to grow and so is our commitment to serve them. We have been extending the network around the world by establishing partnerships with experienced consultants and associates to provide solutions to our clientele more effectively.
If you need one window solution to all your HR/employment needs, please give us a chance to prove our mettle by providing competent, qualified and experienced candidates to you in a very professional & timely manner. We have our own interview & trade testing facilities in major cities such as Karachi, Lahore & Islamabad etc. We are looking forward to work with your esteemed organization.
Thanks / B. Regards
-----------------------------------------
Farrukh A. Shaikh | Director
0092300-8228363 (PAK)
0096653-5705632 (KSA)
farrukh(a)sazunilinks.com
Skype: "farrukh.a.shaikh"
www.linkedin.com/in/farrukhshaikh
WhatsApp for Android & iPhone 0092300-8228363
P.S: If you are not a concern person we should contact regarding Recruitment/HR, kindly let us have e-mail address of Recruitment/HR Manager of your company. We'd appreciate your kind co-operation in this regard. You can also add us on Skype "farrukh.a.shaikh" for any urgent discussions regarding your manpower needs between 11 AM to 7 PM PST.
S.A.Z Universal Links
Overseas Employment Promoters
(License # 2710/KHI)
3rd Floor, 11-E, 7th Commercial Lane,
Zamzama Boulevard, DHA-V,
Karachi-75500, Pakistan.
P: 009221-3-5375035-7 / 3-5375774-5 / 3-5875188
F: 009221-3-5838884
M: 0092300-8231431
M: 0092300-8228363
info(a)sazunilinks.com
W: www.sazunilinks.com
FB: www.facebook.com/sazunilinks
LI: www.linkedin.com/groups?gid=3121564
** The information contained in this message or any of its attachments may be privileged and confidential and intended for the exclusive use of the addressee. The views expressed may not be S.A.Z Universal Links's policy but the personal views of the originator. If you have received this message in error, please unsubscribe by advising the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy.**
2 years, 10 months
[PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes
by Dan Williams
The following series implements...
Changes since v3 [1]:
* Kill IS_DAX() in favor of explicit IS_FSDAX() and IS_DEVDAX() helpers.
Jan noted, "having IS_DAX() and IS_FSDAX() doing almost the same, just
not exactly the same, is IMHO a recipe for confusion", and I agree. A
nice side effect of this elimination is a cleanup to remove occasions of
"#ifdef CONFIG_FS_DAX" in C files, it is all moved to header files
now. (Jan)
---
The vfio interface, like RDMA, wants to setup long term (indefinite)
pins of the pages backing an address range so that a guest or userspace
driver can perform DMA to the with physical address. Given that this
pinning may lead to filesystem operations deadlocking in the
filesystem-dax case, the pinning request needs to be rejected.
The longer term fix for vfio, RDMA, and any other long term pin user, is
to provide a 'pin with lease' mechanism. Similar to the leases that are
hold for pNFS RDMA layouts, this userspace lease gives the kernel a way
to notify userspace that the block layout of the file is changing and
the kernel is revoking access to pinned pages.
Related to this change is the discovery that vma_is_fsdax() was causing
device-dax inode detection to fail. That lead to series of fixes and
cleanups to make sure that S_DAX is defined correctly in the
CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y case.
---
Dan Williams (12):
dax: fix vma_is_fsdax() helper
dax: introduce IS_DEVDAX() and IS_FSDAX()
ext2, dax: finish implementing dax_sem helpers
ext2, dax: define ext2_dax_*() infrastructure in all cases
ext4, dax: define ext4_dax_*() infrastructure in all cases
ext2, dax: replace IS_DAX() with IS_FSDAX()
ext4, dax: replace IS_DAX() with IS_FSDAX()
xfs, dax: replace IS_DAX() with IS_FSDAX()
mm, dax: replace IS_DAX() with IS_DEVDAX() or IS_FSDAX()
fs, dax: kill IS_DAX()
dax: fix S_DAX definition
vfio: disable filesystem-dax page pinning
drivers/vfio/vfio_iommu_type1.c | 18 ++++++++++++++--
fs/ext2/ext2.h | 6 +++++
fs/ext2/file.c | 19 +++++------------
fs/ext2/inode.c | 10 ++++-----
fs/ext4/file.c | 18 +++++-----------
fs/ext4/inode.c | 4 ++--
fs/ext4/ioctl.c | 2 +-
fs/ext4/super.c | 2 +-
fs/iomap.c | 2 +-
fs/xfs/xfs_file.c | 14 ++++++-------
fs/xfs/xfs_ioctl.c | 4 ++--
fs/xfs/xfs_iomap.c | 6 +++--
fs/xfs/xfs_reflink.c | 2 +-
include/linux/dax.h | 12 ++++++++---
include/linux/fs.h | 43 ++++++++++++++++++++++++++++-----------
mm/fadvise.c | 3 ++-
mm/filemap.c | 4 ++--
mm/huge_memory.c | 4 +++-
mm/madvise.c | 3 ++-
19 files changed, 102 insertions(+), 74 deletions(-)
2 years, 11 months
[PATCH v6 0/3] minimal DAX support for XFS realtime device
by Dave Jiang
Darrick,
After reading the comments from you, Dave Chinner, and Dan, it looks like
the dyanmic S_DAX flag support won't be coming or not any time soon at the
least. Here are the the collection of patches so far to address yours and
Dave C's comments for minimal support. Please let me know what else I am
missing. Thanks!
v6:
- Removed excess () per Christoph comment.
v5:
- Removed sb parameter for bdev_dax_supported() since we only use it for
debug output per Christoph comment.
v4:
- Removed setting of error return in ext2 and ext4 per Ross's comments
- Rebased against 4.16-rc1 with updates
---
Darrick J. Wong (1):
fs: allow per-device dax status checking for filesystems
Dave Jiang (2):
dax: change bdev_dax_supported() to support boolean returns
xfs: reject removal of realtime flag when datadev doesn't support DAX
drivers/dax/super.c | 44 ++++++++++++++++++++++----------------------
fs/ext2/super.c | 3 +--
fs/ext4/super.c | 3 +--
fs/xfs/xfs_ioctl.c | 17 ++++++++++++++++-
fs/xfs/xfs_iops.c | 30 +++++++++++++++++++++++++-----
fs/xfs/xfs_super.c | 10 ++++++++--
include/linux/dax.h | 12 ++++--------
7 files changed, 77 insertions(+), 42 deletions(-)
--
2 years, 11 months
[PATCH] dax: ->direct_access does not sleep anymore
by Boaz Harrosh
In Patch:
[7a862fb] brd: remove dax support
Dan Williams has removed the only might_sleep
implementation of ->direct_access.
So we no longer need to check for it.
CC: Dan Williams <dan.j.williams(a)intel.com>
Signed-off-by: Boaz Harrosh <boazh(a)netapp.com>
---
drivers/dax/super.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index 3ec8046..0a75550 100644
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -236,12 +236,6 @@ long dax_direct_access(struct dax_device *dax_dev, pgoff_t pgoff, long nr_pages,
{
long avail;
- /*
- * The device driver is allowed to sleep, in order to make the
- * memory directly accessible.
- */
- might_sleep();
-
if (!dax_dev)
return -EOPNOTSUPP;
--
2.5.5
2 years, 11 months
转发:/ 战略驱动的流程与组织变革
by 薄林牧
linux-nvdimm//
战略驱动的流程与组织变革
2018年03月16-17日深圳 2018年03月30-31日上海
【费 用】 6800元/人
报名咨询电话:0755-61288035 021-31261580
手机:18890700600 (微信同号)赵先生
在线咨询 QQ:6983436 报名信箱:6983436(a)qq.com (报名请回复索取报名表)
参课对象
流程管理专业人员及业务中基层干部、各业务领域及职能领域负责人、流程建设推进委员会成员
课程背景
——战略转型转不动,如何让干部承担变革责任,推进流程例行化,实现责任下移,解放核心管理人员,提升组织成长能力?
——跨部门协同效率低,市场需求响应和交付慢,如何通过持续的端到端流程变革提升组织能力和盈利能力?
——职业化人才缺乏,培养人速度慢,如何通过流程变革实现业务复制和人才复制?
——流程变革准备度低,推进流程变革与优化阻力大,如何通过流程变革技术的应用,降低变革风险,提升变革成功率?
企业管理变革的目标——从职能型组织到流程型组织,从粗放式增长到价值驱动型增长
主讲老师
流程管理及组织变革顶尖实务专家——陈志强博士
曾为上千家知名大中型企业及细分行业快速发展的中小企业提供专业的流程优化培训服务,并带领公司咨询团队为几百家企业
提供了流程优化的咨询项目服务,为国内企业流程管理意识和水平的提升做出了一定的贡献,在思想性、专业性和实用性方面
受到客户的高度评价。
基于公司战略和商业模式,帮助客户构建端到端的业务流程体系,提升组织的成长能力;并对企业关键流程实施优化和变革,
改进流程绩效,打造流程型组织,以提升竞争优势。
陈博士还领导杰成团队开发了国内首套流程审计的要素和标准,以及流程和制度体系管理IT平台(EPROS),帮助流程管理部
门在公司内系统地推进流程规划、流程设计、流程发布、员工应用以及流程持续优化等工作。
课程大纲
一、为什么要打造流程型组织
1、什么是流程型组织
2、流程型组织带来什么变化
责任下移与前移——用流程解放管理者
从管控到服务——用流程创造价值
从本位到全局——用干部轮岗机制实现人才辈出
不仅要做大,关键要做强——用流程打造敏捷和专业的组织
3、管理者应该具备什么样的变革意识和变革责任
4、通过流程和组织变革打造流程型组织
5、企业流程成熟度测评——从现状到未来
二、流程架构再造——以客户为中心重构流程系统
1、传统流程架构的缺陷
2、流程架构再造的步骤
识别支撑战略目标实现的关键业务能力
通过再造流程架构开发关键业务能力
识别面向客户的端到端业务流程
识别为主业务提供驱动和支撑的使能流程
识别提供共享服务的管理支持流程
从L1到L6的架构设计
影响架构设计的关键因素——战略、业务模式、组织资源等
如何在规则化和灵活性之间取得平衡——场景细分和裁剪原则
端到端流程与业务组件的关系
组织和流程的适配关系
合规性和高效如何共存——多体系融合(制度、流程、标准、法规、风控)
建立与流程架构相匹配的治理结构
流程治理结构的重要性
明确L1/L2/L3流程owner
定义owner的责任和运作机制
三、支撑战略绩效提升的流程变革
1、战略驱动的流程变革规划
2、变革委员会与变革项目办公室的运作机制
3、流程变革实施的步骤
识别需要重点提升的战略绩效指标
指标对标,确定绩效改进目标
识别影响目标达成的关键流程
确定变革范围,策划变革项目
关注流程现状——建模与度量
流程差距分析与诊断,识别流程优化机会点
流程重设计和组织适配
实施新流程
项目成果评估与验收
四、变革管理技术—降低变革风险、提升变革项目成功率
1、为什么变革项目容易失败—人的问题是变革面临最大的问题
2、变革管理的最佳实践—方法、案例与应用
评估变革准备度
提升变革准备度
组织变革能力和变革策略
如何打造高效的变革项目团队
强化变革赞助人的作用
识别和管理变革的阻力
变革过程中的沟通管理-提高透明度
识别变革对文化转型的要求
确定新方案对绩效和组织模式的变化要求
五、构建流程变革长效机制—将流程优化活动常态化
1、什么是流程生命周期管理
2、流程管理的组织设置与运作模式
3、流程管理工作的流程化与制度化
4、流程建设的考核与激励
5、流程审计运作机制——确保流程的有效执行
6、流程优化运作机制——确保流程的持续优化
7、流程管理IT平台导入与应用
《战略驱动的流程与组织变革》
----报 名 回 执 表----
(在线报名请下载附件报名回执表填写后发送 至信箱 6983436(a)qq.com)
(請务必填写貴公司全称和参会學员真实姓名,谢谢!)
单位名称(即发票抬头):________________________________________________
(请务必正楷字填写正确)
联 系 人:_____________ 联系电话:_____________ 手 机:_________________
E-mail: ____________________________________ 传 真:_________________
参会代表:____________ 移动电话:________________ 职 务: ______________
参会代表:____________ 移动电话:________________ 职 务: ______________
参会代表:____________ 移动电话:________________ 职 务: ______________
参会代表:____________ 移动电话:________________ 职 务: ______________
参会代表:____________ 移动电话:________________ 职 务: ______________
参会代表:____________ 移动电话:________________ 职 务: ______________
共计费用:___________ 元整。 付款方式:□ 现 金 □ 转 帐(请选择打“√”)
备注:
1.请您把报名回执认真填好后回传我司,为确保您报名无误,请您再次电话确认!
2.本课程可根据企业需要组织内训。
2 years, 11 months
[PATCH v3 0/6] vfio, dax: prevent long term filesystem-dax pins and other fixes
by Dan Williams
Changes since v2 [1]:
* Fix yet more compile breakage in the FS_DAX=n and DEV_DAX=y case.
(0day robot)
[1]: https://lists.01.org/pipermail/linux-nvdimm/2018-February/014046.html
---
The vfio interface, like RDMA, wants to setup long term (indefinite)
pins of the pages backing an address range so that a guest or userspace
driver can perform DMA to the with physical address. Given that this
pinning may lead to filesystem operations deadlocking in the
filesystem-dax case, the pinning request needs to be rejected.
The longer term fix for vfio, RDMA, and any other long term pin user, is
to provide a 'pin with lease' mechanism. Similar to the leases that are
hold for pNFS RDMA layouts, this userspace lease gives the kernel a way
to notify userspace that the block layout of the file is changing and
the kernel is revoking access to pinned pages.
---
Dan Williams (6):
dax: fix vma_is_fsdax() helper
dax: fix dax_mapping() definition in the FS_DAX=n + DEV_DAX=y case
xfs, dax: introduce IS_FSDAX()
dax: fix S_DAX definition
dax: short circuit vma_is_fsdax() in the CONFIG_FS_DAX=n case
vfio: disable filesystem-dax page pinning
drivers/vfio/vfio_iommu_type1.c | 18 +++++++++++++++---
fs/xfs/xfs_file.c | 14 +++++++-------
fs/xfs/xfs_ioctl.c | 4 ++--
fs/xfs/xfs_iomap.c | 6 +++---
fs/xfs/xfs_reflink.c | 2 +-
include/linux/dax.h | 9 ++++++---
include/linux/fs.h | 8 ++++++--
7 files changed, 40 insertions(+), 21 deletions(-)
2 years, 11 months
[PATCH v2 0/5] vfio, dax: prevent long term filesystem-dax pins and other fixes
by Dan Williams
Changes since v1 [1]:
* Fix the detection of device-dax file instances in vma_is_fsdax().
(Haozhong, Gerd)
* Fix compile breakage in the FS_DAX=n and DEV_DAX=y case. (0day robot)
[1]: https://lists.01.org/pipermail/linux-nvdimm/2018-February/014046.html
---
The vfio interface, like RDMA, wants to setup long term (indefinite)
pins of the pages backing an address range so that a guest or userspace
driver can perform DMA to the with physical address. Given that this
pinning may lead to filesystem operations deadlocking in the
filesystem-dax case, the pinning request needs to be rejected.
The longer term fix for vfio, RDMA, and any other long term pin user, is
to provide a 'pin with lease' mechanism. Similar to the leases that are
hold for pNFS RDMA layouts, this userspace lease gives the kernel a way
to notify userspace that the block layout of the file is changing and
the kernel is revoking access to pinned pages.
---
Dan Williams (5):
dax: fix vma_is_fsdax() helper
dax: fix dax_mapping() definition in the FS_DAX=n + DEV_DAX=y case
dax: fix S_DAX definition
dax: short circuit vma_is_fsdax() in the CONFIG_FS_DAX=n case
vfio: disable filesystem-dax page pinning
drivers/vfio/vfio_iommu_type1.c | 18 +++++++++++++++---
include/linux/dax.h | 9 ++++++---
include/linux/fs.h | 6 ++++--
3 files changed, 25 insertions(+), 8 deletions(-)
2 years, 11 months