return 0;
 }
 
-static int
-qla2x00_dfs_tgt_sess_open(struct inode *inode, struct file *file)
-{
-       scsi_qla_host_t *vha = inode->i_private;
-
-       return single_open(file, qla2x00_dfs_tgt_sess_show, vha);
-}
-
-static const struct file_operations dfs_tgt_sess_ops = {
-       .open           = qla2x00_dfs_tgt_sess_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(qla2x00_dfs_tgt_sess);
 
 static int
 qla2x00_dfs_tgt_port_database_show(struct seq_file *s, void *unused)
        return 0;
 }
 
-static int
-qla2x00_dfs_tgt_port_database_open(struct inode *inode, struct file *file)
-{
-       scsi_qla_host_t *vha = inode->i_private;
-
-       return single_open(file, qla2x00_dfs_tgt_port_database_show, vha);
-}
-
-static const struct file_operations dfs_tgt_port_database_ops = {
-       .open           = qla2x00_dfs_tgt_port_database_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(qla2x00_dfs_tgt_port_database);
 
 static int
 qla_dfs_fw_resource_cnt_show(struct seq_file *s, void *unused)
        return 0;
 }
 
-static int
-qla_dfs_fw_resource_cnt_open(struct inode *inode, struct file *file)
-{
-       struct scsi_qla_host *vha = inode->i_private;
-
-       return single_open(file, qla_dfs_fw_resource_cnt_show, vha);
-}
-
-static const struct file_operations dfs_fw_resource_cnt_ops = {
-       .open           = qla_dfs_fw_resource_cnt_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(qla_dfs_fw_resource_cnt);
 
 static int
 qla_dfs_tgt_counters_show(struct seq_file *s, void *unused)
        return 0;
 }
 
-static int
-qla_dfs_tgt_counters_open(struct inode *inode, struct file *file)
-{
-       struct scsi_qla_host *vha = inode->i_private;
-
-       return single_open(file, qla_dfs_tgt_counters_show, vha);
-}
-
-static const struct file_operations dfs_tgt_counters_ops = {
-       .open           = qla_dfs_tgt_counters_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(qla_dfs_tgt_counters);
 
 static int
 qla2x00_dfs_fce_show(struct seq_file *s, void *unused)
 
 create_nodes:
        ha->dfs_fw_resource_cnt = debugfs_create_file("fw_resource_count",
-           S_IRUSR, ha->dfs_dir, vha, &dfs_fw_resource_cnt_ops);
+           S_IRUSR, ha->dfs_dir, vha, &qla_dfs_fw_resource_cnt_fops);
 
        ha->dfs_tgt_counters = debugfs_create_file("tgt_counters", S_IRUSR,
-           ha->dfs_dir, vha, &dfs_tgt_counters_ops);
+           ha->dfs_dir, vha, &qla_dfs_tgt_counters_fops);
 
        ha->tgt.dfs_tgt_port_database = debugfs_create_file("tgt_port_database",
-           S_IRUSR,  ha->dfs_dir, vha, &dfs_tgt_port_database_ops);
+           S_IRUSR,  ha->dfs_dir, vha, &qla2x00_dfs_tgt_port_database_fops);
 
        ha->dfs_fce = debugfs_create_file("fce", S_IRUSR, ha->dfs_dir, vha,
            &dfs_fce_ops);
 
        ha->tgt.dfs_tgt_sess = debugfs_create_file("tgt_sess",
-               S_IRUSR, ha->dfs_dir, vha, &dfs_tgt_sess_ops);
+               S_IRUSR, ha->dfs_dir, vha, &qla2x00_dfs_tgt_sess_fops);
 
        if (IS_QLA27XX(ha) || IS_QLA83XX(ha) || IS_QLA28XX(ha)) {
                ha->tgt.dfs_naqp = debugfs_create_file("naqp",